Поделиться через


Руководство по созданию и развертыванию проекта SQL

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure базе данных SQL в Microsoft Fabric

Цикл разработки проекта базы данных SQL позволяет интегрировать разработку базы данных в рабочие процессы непрерывной интеграции и непрерывного развертывания (CI/CD), знакомые как рекомендации по разработке. Хотя развертывание проекта базы данных SQL можно выполнить вручную, рекомендуется использовать конвейер развертывания для автоматизации процесса развертывания, таким образом, что текущие развертывания выполняются на основе продолжения локальной разработки без дополнительных усилий.

В этой статье описывается создание проекта SQL, добавление объектов в проект и настройка конвейера непрерывного развертывания для создания и развертывания проекта с помощью действий GitHub. Руководство — это супермножество содержимого статей о начале работы проектов SQL. Хотя руководство реализует конвейер развертывания в действиях GitHub, те же понятия применяются к Azure DevOps, GitLab и другим средам автоматизации.

Изучив это руководство, вы:

  1. Создание проекта SQL
  2. Добавление объектов в проект
  3. Создание проекта локально
  4. Проверка проекта в системе управления версиями
  5. Добавление шага сборки проекта в конвейер непрерывного развертывания
  6. .dacpac Добавление шага развертывания в конвейер непрерывного развертывания

Если вы уже выполнили действия, описанные в статье о начале работы с проектами SQL, можно перейти к шагу 4. В конце этого руководства проект SQL будет автоматически создавать и развертывать изменения в целевой базе данных.

Необходимые компоненты

# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage

# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates

Убедитесь, что у вас есть следующие элементы, чтобы завершить настройку конвейера в GitHub:

  • Учетная запись GitHub, в которой можно создать репозиторий. Создайте ее бесплатно.

  • Действия GitHub включены в репозитории.

Примечание.

Чтобы завершить развертывание проекта базы данных SQL, необходимо получить доступ к экземпляру SQL Azure или SQL Server. Вы можете разрабатывать локально бесплатно с помощью выпуска разработчика SQL Server в Windows или в контейнерах.

Шаг 1. Создание проекта

Мы начинаем проект, создав проект базы данных SQL перед добавлением объектов в него вручную. Существуют другие способы создания проекта, который позволяет немедленно заполнять проект объектами из существующей базы данных, например с помощью средств сравнения схем.

Выберите "Файл", "Создать", а затем "Проект".

В диалоговом окне "Новый проект" используйте термин SQL Server в поле поиска. Главным результатом должен быть проект базы данных SQL Server.

Снимок экрана: диалоговое окно

Нажмите Далее, чтобы перейти к следующему шагу. Укажите имя проекта, которое не обязательно соответствует имени базы данных. Проверьте и измените расположение проекта по мере необходимости.

Выберите Создать, чтобы создать проект. Пустой проект открывается и отображается в Обозреватель решений для редактирования.

Выберите "Файл", "Создать", а затем "Проект".

В диалоговом окне "Новый проект" используйте термин SQL Server в поле поиска. Главным результатом должно быть проект базы данных SQL Server, стиль пакета SDK (предварительная версия).

Снимок экрана: диалоговое окно

Нажмите Далее, чтобы перейти к следующему шагу. Укажите имя проекта, которое не обязательно соответствует имени базы данных. Проверьте и измените расположение проекта по мере необходимости.

Выберите Создать, чтобы создать проект. Пустой проект открывается и отображается в Обозреватель решений для редактирования.

В представлении проектов баз данных VS Code или Azure Data Studio нажмите кнопку "Создать проект".

Снимок экрана: new viewlet.

Первый запрос определяет, какой шаблон проекта следует использовать, в первую очередь, на основе того, является ли целевая платформа SQL Server или SQL Azure. Если появится запрос на выбор определенной версии SQL, выберите версию, соответствующую целевой базе данных, но если целевая версия базы данных неизвестна, выберите последнюю версию в качестве значения позже.

Введите имя проекта в появившемся текстовом вводе, которое не обязательно совпадает с именем базы данных.

В появившемся диалоговом окне "Выбор папки" выберите каталог для папки, .sqlproj файла и другого содержимого проекта.

При появлении запроса на создание проекта в стиле SDK (предварительная версия) нажмите кнопку "Да".

После завершения пустой проект открывается и отображается в представлении проектов баз данных для редактирования.

С установленными шаблонами .NET для проектов Microsoft.Build.Sql можно создать новый проект базы данных SQL из командной строки. Параметр -n указывает имя проекта, а -tp параметр указывает целевую платформу проекта.

Используйте этот параметр, чтобы просмотреть все доступные -h параметры.

# install Microsoft.Build.Sql.Templates
dotnet new sqlproject -n MyDatabaseProject

Шаг 2. Добавление объектов в проект

В Обозреватель решений щелкните правой кнопкой мыши узел проекта и выберите "Добавить", а затем "Таблица". Откроется диалоговое окно "Добавить новый элемент ", где можно указать имя таблицы. Нажмите кнопку "Добавить ", чтобы создать таблицу в проекте SQL.

Таблица открывается в конструкторе таблиц Visual Studio с определением таблицы шаблона, где можно добавлять столбцы, индексы и другие свойства таблицы. Сохраните файл после завершения первоначального редактирования.

Дополнительные объекты базы данных можно добавить с помощью диалогового окна "Добавление нового элемента ", таких как представления, хранимые процедуры и функции. Откройте диалоговое окно, щелкнув правой кнопкой мыши узел проекта в Обозреватель решений и выбрав "Добавить", а затем выберите нужный тип объекта. Файлы в проекте можно упорядочить в папки с помощью параметра "Создать папку " в разделе "Добавить".

В Обозреватель решений щелкните правой кнопкой мыши узел проекта и выберите "Добавить", а затем "Создать элемент". Откроется диалоговое окно "Добавить новый элемент ", выберите " Показать все шаблоны " и " Таблица". Укажите имя таблицы в качестве имени файла и нажмите кнопку "Добавить ", чтобы создать таблицу в проекте SQL.

Таблица открывается в редакторе запросов Visual Studio с определением таблицы шаблона, где можно добавлять столбцы, индексы и другие свойства таблицы. Сохраните файл после завершения первоначального редактирования.

Дополнительные объекты базы данных можно добавить с помощью диалогового окна "Добавление нового элемента ", таких как представления, хранимые процедуры и функции. Откройте диалоговое окно, щелкнув правой кнопкой мыши узел проекта в Обозреватель решений и выбрав "Добавить", а затем выберите нужный тип объекта после отображения всех шаблонов. Файлы в проекте можно упорядочить в папки с помощью параметра "Создать папку " в разделе "Добавить".

В представлении проектов баз данных VS Code или Azure Data Studio щелкните правой кнопкой мыши узел проекта и выберите "Добавить таблицу". В появившемся диалоговом окне укажите имя таблицы.

Таблица открывается в текстовом редакторе с определением таблицы шаблона, где можно добавлять столбцы, индексы и другие свойства таблицы. Сохраните файл после завершения первоначального редактирования.

Дополнительные объекты базы данных можно добавить с помощью контекстного меню на узле проекта, таких как представления, хранимые процедуры и функции. Откройте диалоговое окно, щелкнув правой кнопкой мыши узел проекта в представлении "Проекты баз данных" VS Code или Azure Data Studio, а затем нужный тип объекта. Файлы в проекте можно упорядочить в папки с помощью параметра "Создать папку " в разделе "Добавить".

Файлы можно добавить в проект, создав их в каталоге проекта или вложенных папках. Расширение файла должно быть .sql и организацией по типу объекта или схеме и типу объекта рекомендуется.

Базовый шаблон таблицы можно использовать в качестве отправной точки для создания нового объекта таблицы в проекте:

CREATE TABLE [dbo].[Table1]
(
  [Id] INT NOT NULL PRIMARY KEY
)

Шаг 3. Компиляция проекта

Процесс сборки проверяет связи между объектами и синтаксисом для целевой платформы, указанной в файле проекта. Выходные данные артефакта из процесса сборки — это .dacpac файл, который можно использовать для развертывания проекта в целевой базе данных и содержит скомпилированную модель схемы базы данных.

В Обозреватель решений щелкните правой кнопкой мыши узел проекта и выберите "Сборка".

Окно вывода автоматически открывается для отображения процесса сборки. При возникновении ошибок или предупреждений они отображаются в окне вывода. В успешной сборке создается артефакт сборки (.dacpac файл) его расположение включается в выходные данные сборки (по умолчанию bin\Debug\projectname.dacpac).

В Обозреватель решений щелкните правой кнопкой мыши узел проекта и выберите "Сборка".

Окно вывода автоматически открывается для отображения процесса сборки. При возникновении ошибок или предупреждений они отображаются в окне вывода. В успешной сборке создается артефакт сборки (.dacpac файл) его расположение включается в выходные данные сборки (по умолчанию bin\Debug\projectname.dacpac).

В представлении проектов баз данных VS Code или Azure Data Studio щелкните правой кнопкой мыши узел проекта и выберите "Сборка".

Окно вывода автоматически открывается для отображения процесса сборки. При возникновении ошибок или предупреждений они отображаются в окне вывода. В успешной сборке создается артефакт сборки (.dacpac файл) его расположение включается в выходные данные сборки (по умолчанию bin/Debug/projectname.dacpac).

Проекты базы данных SQL можно создавать из командной dotnet build строки с помощью команды.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

Выходные данные сборки включают любые ошибки или предупреждения, а также определенные файлы и номера строк, в которых они происходят. В успешной сборке создается артефакт сборки (.dacpac файл) его расположение включается в выходные данные сборки (по умолчанию bin/Debug/projectname.dacpac).

Шаг 4. Проверка проекта в системе управления версиями

Мы инициализируем наш проект в качестве репозитория Git и зафиксируем файлы проекта в системе управления версиями. Этот шаг необходим для предоставления общего доступа к проекту другим пользователям и использования в конвейере непрерывного развертывания.

  1. В меню Git в Visual Studio выберите "Создать репозиторий Git".

    Снимок экрана: параметр

  2. В диалоговом окне "Создание репозитория Git" в разделе "Отправить" в новый удаленный раздел выберите GitHub.

  3. В разделе "Создание репозитория GitHub" диалогового окна "Создание репозитория Git" введите имя репозитория, который вы хотите создать. (Если вы еще не вошли в учетную запись GitHub, это можно сделать с этого экрана.

    Снимок экрана: диалоговое окно

    В разделе "Инициализация локального репозитория Git" следует использовать параметр шаблона .gitignore, чтобы указать все намеренно неуправляемые файлы, которые нужно игнорировать Git. Дополнительные сведения о .gitignore см. в разделе "Игнорируние файлов". Дополнительные сведения о лицензировании см. в статье "Лицензирование репозитория".

  4. После входа и ввода сведений о репозитории нажмите кнопку "Создать и отправить ", чтобы создать репозиторий и добавить приложение.

В Обозреватель решений щелкните правой кнопкой мыши узел проекта и выберите "Опубликовать...".

Откроется диалоговое окно публикации, в котором устанавливается подключение к целевой базе данных. Если у вас нет существующего экземпляра SQL для развертывания, LocalDB ((localdb)\MSSQLLocalDB) устанавливается в Visual Studio и может использоваться для тестирования и разработки.

Укажите имя базы данных и выберите "Опубликовать ", чтобы развернуть проект в целевой базе данных или создать скрипт, чтобы создать скрипт для проверки перед выполнением.

Вы можете инициализировать и локальный репозиторий и опубликовать его непосредственно в GitHub из VS Code или Azure Data Studio. Это действие создает новый репозиторий в учетной записи GitHub и отправляет изменения локального кода в удаленный репозиторий на одном шаге.

Нажмите кнопку "Опубликовать в GitHub " в представлении "Управление версиями" в VS Code или Azure Data Studio. Затем вам будет предложено указать имя и описание репозитория, а также сделать его общедоступным или частным.

Снимок экрана: диалоговое окно

Кроме того, вы можете инициализировать локальный репозиторий и отправить его на GitHub, выполнив действия, описанные при создании пустого репозитория на GitHub.

Инициализация нового репозитория Git в каталоге проекта и фиксация файлов проекта в системе управления версиями.

git init
git add .
git commit -m "Initial commit"

Создайте репозиторий на GitHub и отправьте локальный репозиторий в удаленный репозиторий.

git remote add origin <repository-url>
git push -u origin main

Шаг 5. Добавление шага сборки проекта в конвейер непрерывного развертывания

Проекты SQL поддерживаются библиотекой .NET, и в результате проекты создаются с помощью dotnet build команды. Эта команда является основной частью даже самых простых конвейеров непрерывной интеграции и непрерывного развертывания (CI/CD). Шаг сборки можно добавить в конвейер непрерывного развертывания, который мы создадим в действиях GitHub.

  1. В корне репозитория создайте новый каталог с именем .github/workflows. Этот каталог будет содержать файл рабочего процесса, определяющий конвейер непрерывного развертывания.

  2. В каталоге .github/workflows создайте файл с именем sqlproj-sample.yml.

  3. Добавьте в файл следующее содержимое sqlproj-sample.yml , изменив имя проекта, чтобы соответствовать имени и пути проекта:

    name: sqlproj-sample
    
    on:
      push:
        branches: [ "main" ]
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v4
    
        - name: Setup .NET
          uses: actions/setup-dotnet@v4
          with:
            dotnet-version: 8.0.x
    
        - name: Build
          run: dotnet build MyDatabaseProject.sqlproj
    
  4. Зафиксируйте файл рабочего процесса в репозиторий и отправьте изменения в удаленный репозиторий.

  5. На сайте GitHub.com перейдите на главную страницу репозитория. Под именем своего репозитория щелкните Действия. На левой боковой панели выберите только что созданный рабочий процесс. Недавний запуск рабочего процесса должен отображаться в списке рабочих процессов при отправке файла рабочего процесса в репозиторий.

Дополнительные сведения о создании первого рабочего процесса действий GitHub см. в кратком руководстве по GitHub Actions.

Шаг 6. Добавление .dacpac шага развертывания в конвейер непрерывного развертывания

Скомпилированную модель схемы базы данных в файле можно развернуть в .dacpac целевой базе данных с помощью SqlPackage средства командной строки или других средств развертывания. Процесс развертывания определяет необходимые шаги для обновления целевой базы данных для сопоставления схемы, определенной в .dacpac, создания или изменения объектов по мере необходимости на основе уже существующих в базе данных объектов. Например, чтобы развернуть .dacpac файл в целевой базе данных на основе строка подключения:

sqlpackage /Action:Publish /SourceFile:bin/Debug/MyDatabaseProject.dacpac /TargetConnectionString:{yourconnectionstring}

Снимок экрана: исходный и целевой процесс сравнения DacFx перед развертыванием.

Процесс развертывания является идемпотентным, то есть он может выполняться несколько раз, не вызывая проблем. Создаваемый конвейер будет создавать и развертывать проект SQL каждый раз при проверке изменений в main ветви нашего репозитория. Вместо выполнения SqlPackage команды непосредственно в конвейере развертывания можно использовать задачу развертывания, которая абстрагирует команду и предоставляет дополнительные функции, такие как ведение журнала, обработка ошибок и конфигурация задач. Задача развертывания GitHub sql-action может быть добавлена в конвейер непрерывного развертывания в действиях GitHub.

Примечание.

При выполнении развертывания из среды автоматизации требуется настройка базы данных и среды, чтобы развертывание было доступно для базы данных и проверки подлинности. В База данных SQL Azure или SQL Server на виртуальной машине может потребоваться настройка правила брандмауэра, чтобы разрешить среде автоматизации подключаться к базе данных, а также предоставлять строка подключения с необходимыми учетными данными. Инструкции приведены в документации по GitHub sql-action .

  1. sqlproj-sample.yml Откройте файл в каталоге.github/workflows.

  2. Добавьте следующий шаг в sqlproj-sample.yml файл после шага сборки:

    - name: Deploy
      uses: azure/sql-action@v2
      with:
        connection-string: ${{ secrets.SQL_CONNECTION_STRING }}
        action: 'publish'
        path: 'bin/Debug/MyDatabaseProject.dacpac'
    
  3. Перед фиксацией изменений добавьте секрет в репозиторий, содержащий строка подключения в целевую базу данных. В репозитории на GitHub.com перейдите в раздел "Параметры", а затем "Секреты". Выберите новый секрет репозитория и добавьте секрет SQL_CONNECTION_STRING с именем значения строка подключения в целевую базу данных.

    Снимок экрана: параметры репозитория GitHub с выделенной кнопкой

  4. Зафиксируйте изменения из sqlproj-sample.yml репозитория и отправьте изменения в удаленный репозиторий.

  5. Вернитесь к журналу рабочих процессов GitHub.com и выберите последний запуск рабочего процесса. Шаг развертывания должен отображаться в списке шагов для выполнения рабочего процесса, а рабочий процесс возвращает код успешного выполнения.

  6. Проверьте развертывание, подключившись к целевой базе данных и убедившись, что объекты в проекте присутствуют в базе данных.

Развертывания GitHub можно дополнительно защитить, установив связь среды в рабочем процессе и требуя утверждения перед запуском развертывания. Дополнительные сведения о защите среды и защите секретов см. в документации по GitHub Actions.

Получить помощь