Рабочий процесс создания и развертывания .sqlproj

Я ищу подходящий рабочий процесс для развертывания SQL Server без каких-либо действий вручную.

У меня есть папка, в которой я описываю, как должна выглядеть база данных SQL Server, под этим я имею в виду файлы .sql, которые создают таблицы, роли и т. д.

На данный момент у нас есть файл .sln, созданный Visual Studio, который не используется ни для каких других целей, кроме создания файла решения .sln, который создает .dacpac, поэтому в идеале я бы хотел от него избавиться.

Я хочу использовать Azure Data Studio для создания файла .sqlproj, содержащего информацию о том, в каких папках содержатся файлы .sql, которые необходимо использовать для создания файла .dacpac, а затем развертывания его в базе данных sql.

Проблема в том, что если вы решите добавить папку с новыми таблицами, вам необходимо пересобрать .sln (или, возможно ли это: запустить сценарии .sql (в виде запросов) к базе данных разработчиков, чтобы их зарегистрировал базу данных, и эти изменения должны быть отражены в файле .sqlproj, когда он будет построен на соответствующем этапе конвейера.)

Конвейер выглядит следующим образом (Сборка и развертывание DACPAC через конвейер Azure DevOps без .sln (или какого-либо артефакта)):

variables:
  ARMSvcCnnName: YourAzureResourceManagerServiceConnectionName
  AzureSQLServerName: YourAzureSQLSeverName
  AzureSQLDBName: YourAzureSQLDBName
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

pool:
  vmImage: 'windows-latest'

steps:
- task: VSBuild@1
  displayName: 'Build DACPAC from SQL Database Project'
  inputs:
    solution: '**\*.sqlproj'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
- task: SqlAzureDacpacDeployment@1
  displayName: 'Deploy Azure SQL DB'
  inputs:
    azureSubscription: '$(ARMSvcCnnName)'
    AuthenticationType: 'servicePrincipal'
    ServerName: '$(AzureSQLServerName).database.windows.net'
    DatabaseName: '$(AzureSQLDBName)'
    deployType: 'DacpacTask'
    DeploymentAction: 'Publish'
    DacpacFile: '**\*.dacpac'
    AdditionalArguments: '/v:ETLUserPassword = "$(sql-password)" /v:AppUserPassword = "$(sql-password)"'
    IpDetectionMethod: 'AutoDetect'
    DeleteFirewallRule: false

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

Итак, как я это вижу на данный момент:

Допустим, у меня есть пустая база данных, и я создал .sqlproj, используя:

  1. Пустая база данных Azure
  2. Создайте файл .sqlproj с помощью Azure Data Studio.
  3. Поместите это в мой репозиторий
  4. Запустить конвейер (находит .sqlproj и развертывает пустую базу данных в пустой базе данных).

Идеальный способ работы:

  1. Редактировать папку в репозитории
  2. Pipeline узнает об изменениях
  3. Создает новый .sqlproj.
  4. Создает .sqlproj
  5. Развертывание в базе данных Azure Sql.

Привет @Potis23, приятно снова с тобой работать. Но могу ли я узнать, почему вы хотите, чтобы конвейер генерировал .sqlproj? Как мы уже обсуждали, его следует отправить в облачное репозиторий в качестве исходного кода вашего проекта базы данных SQL для построения конвейера. Могу ли я спросить, какой документ вы используете, чтобы попросить конвейер создать .sqlproj? Разработчики, а не конвейер, должны позаботиться об исходном коде и отправить его в Azure Repos, не так ли?

Alvin Zhao - MSFT 13.06.2024 14:04

Если в файле .sqlproj из вашего локального репозитория произойдет какое-либо изменение, вы можете просто отправить фиксацию изменений в облачный репозиторий Azure, чтобы конвейер сначала загрузил последнюю версию вашего кода из облачного репозитория в агент, а затем собрал ее. версия .sqlproj. Это то, что вас беспокоит в этом посте?

Alvin Zhao - MSFT 13.06.2024 14:09

Еще раз привет @ALvin, спасибо за ответ. Я исследовал, можно ли автоматизировать этап сборки проекта БД. Я пожалуй удалю свою тему по твоему комментарию

Potis23 13.06.2024 14:48

Привет @Potis23! Я думаю, что совершенно нормально делиться своими вопросами в этом посте, поскольку в нашем сообществе всегда есть пользователи, которые не знакомы с проектом SQL DB и Azure DevOps. Рабочий процесс в запросе просто не рекомендуется и не является лучшей практикой. И на протяжении всего пути к новому исследованию у нас всегда возникают разные вопросы, верно? Удачи вам в путешествии и цените ваше участие и усилия.

Alvin Zhao - MSFT 13.06.2024 15:32
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
4
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Учитывая, что мы новички в использовании проекта SQL DB, советуем НЕ генерировать .sqlproj с помощью конвейеров.

Лучше всего разработчикам внести изменения в .sqlproj, отправив коммиты из локальной рабочей области в облачное репозиторий в качестве исходного кода.

Вместо работы с исходным кодом конвейер должен позаботиться обо всем остальном, то есть построить наш проект базы данных SQL, а затем развернуть сгенерированный артефакт .dacpac в базе данных SQL-сервера Azure.

Другие вопросы по теме