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


Руководство по созданию и развертыванию проекта 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 нажмите кнопку "Создать проект".

Снимок экрана нового виджета.

Первый запрос определяет, какой шаблон проекта следует использовать, в первую очередь, на основе того, является ли целевая платформа 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 Actions обращайтесь к краткому руководству GitHub Actions.

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

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

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

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

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

Примечание.

При выполнении развертывания из среды автоматизации требуется настройка базы данных и среды, чтобы развертывание было доступно для базы данных и проверки подлинности. В базе данных 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.

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