Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
В этой статье представлен обзор вариантов автоматизации проектов SQL на разных платформах доставки программного обеспечения. Используйте автоматизацию для интеграции проектов базы данных SQL в конвейеры CI/CD и последовательного и многократного развертывания изменений базы данных.
Что автоматизировать
Автоматизация проектов SQL обычно включает две ключевые задачи в конвейере CI/CD:
Создайте проект SQL: проверьте проект и создайте артефакт развертывания (
.dacpac) путем выполненияdotnet buildв проекте базы данных SQL для компиляции. При необходимости выполните правила анализа кода для проверки качества кода во время сборки проекта..dacpacРазверните: опубликуйте.dacpacцелевую базу данных с помощью SqlPackage или конкретной задачи для платформы. Развертывание может предназначено для Базы данных SQL Azure, Управляемого экземпляра SQL Azure, SQL Server или базы данных SQL в Fabric.
При интеграции этих шагов в конвейер CI/CD изменения базы данных проверяются при каждой фиксации и последовательном развертывании в разных средах.
Общие понятия
Поток артефактов: типичный конвейер отделяет этапы сборки и развертывания. Этап сборки компилирует проект SQL и создает .dacpac файл, который затем публикуется в качестве артефакта конвейера. В последующем задании развертывания (потенциально после утверждения вручную) артефакт загружается и развертывается в целевой базе данных. Это разделение позволяет создавать один раз и развертывать один артефакт в нескольких средах, обеспечивая согласованность.
Публикация или сценарий. Перед развертыванием в конфиденциальных средах можно просмотреть план развертывания. SqlPackage поддерживает Script действие, которое создает скрипт T-SQL, который будет выполняться во время развертывания без применения изменений. Предоставленный скрипт T-SQL позволяет администраторам базы данных или рецензентам проверять точные изменения, необходимые для применения перед утверждением .dacpac . Аналогичным образом действие DeployReport создает XML-отчет о запланированных изменениях.
Утверждения среды и шлюзы. Для рабочих развертываний обычно требуются рабочие процессы утверждения, чтобы предотвратить непредвиденные изменения. GitHub Actions и Azure DevOps поддерживают утверждения на основе среды. В GitHub можно настроить среды с необходимыми рецензентами и таймерами ожидания. В Azure DevOps среды поддерживают шлюзы утверждения, ограничения рабочих часов и другие элементы управления развертыванием. Эти элементы управления помогают убедиться, что изменения базы данных проверяются и утверждены перед достижением рабочей среды.
Предпосылки
SqlPackage является кроссплатформенным и работает в Windows, Linux и macOS. Установите его как глобальное средство .NET, чтобы обеспечить согласованное поведение в разных средах.
Пакет SDK для .NET , установленный в агенте сборки.
SqlPackage , установленный в агенте сборки. SqlPackage можно установить как глобальное средство .NET:
dotnet tool install --global microsoft.sqlpackage
Платформы доставки программного обеспечения
Выберите среду, которая соответствует требованиям к оборудованию, соответствию и подключению вашей команды.
Управляемые виртуальные среды
Управляемые корпорацией Майкрософт виртуальные среды для размещенных в GitHub Actions средств выполнения и агентов Azure Pipelines включают предварительно установленные средства:
| Окружающая среда | Пакет SDK для .NET | SqlPackage |
|---|---|---|
| Виндоус | Preinstalled | Preinstalled |
| Линукс | Preinstalled | Не предустановлено |
| macOS | Preinstalled | Не предустановлено |
В средах Linux и macOS установите SqlPackage в рамках рабочего процесса. Дополнительные сведения об установке и использовании версий SqlPackage в конвейерах см. в sqlPackage в конвейерах разработки.
Локальные среды
Развертывание из локального runner или агента, если требуется больше контроля над средой, например:
- Требования к изоляции сети (доступ к базам данных, не предоставляемым общедоступному Интернету)
- Пользовательские средства или определенные версии SqlPackage
- Политики соответствия или безопасности
Вы можете развертывать локальные запуски в качестве заданий приложений контейнеров Azure для выполнения на основе событий, бессерверного выполнения. Используйте этот подход для определения среды в Dockerfile и установки SqlPackage и других средств по мере необходимости.
Действия GitHub
Действие развертывания SQL Azure (azure/sql-action) предоставляет интегрированный интерфейс для развертывания проектов и .dacpac файлов SQL в Azure SQL и SQL Server из любого средства выполнения действий GitHub.
Ключевые возможности:
- Развертывает
.dacpac,.sqlprojили.sqlскрипты. - Поддерживает проверку подлинности SQL, проверку подлинности Идентификатора Microsoft Entra и проверку подлинности субъекта-службы.
- Автоматически добавляет и удаляет временные правила брандмауэра для базы данных SQL Azure при сочетании с
azure/loginним. - Работает как на запусках Windows, так и в Linux.
Пример. Развертывание проекта SQL с помощью GitHub Actions
# .github/workflows/sql-deploy.yml
on: [push]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/sql-action@v2
with:
connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
path: './Database.sqlproj'
action: 'publish'
Для развертываний базы данных SQL Azure, требующих временного правила брандмауэра, добавьте azure/login шаг перед sql-action:
- uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- uses: azure/sql-action@v2
with:
connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
path: './Database.dacpac'
action: 'publish'
Вы также можете использовать SqlPackage непосредственно на любом средстве выполнения. Дополнительные сведения см. в статье SqlPackage в конвейерах разработки.
Azure Pipelines (система конвейеров Azure)
Azure DevOps предоставляет задачу SqlAzureDacpacDeployment для развертывания .dacpac файлов и скриптов SQL в Базе данных SQL Azure.
Ключевые возможности:
- Развертывает
.dacpacфайлы или выполняет скрипты SQL. - Поддерживает проверку подлинности SQL, проверку подлинности Идентификатора Microsoft Entra и проверку подлинности субъекта-службы.
- Автоматически управляет правилами брандмауэра для базы данных SQL Azure.
- Требуется агент Windows (используйте SqlPackage непосредственно в агентах Linux).
Пример. Развертывание .dacpac с помощью Azure DevOps
# azure-pipelines.yml
trigger:
- main
pool:
vmImage: 'windows-latest'
steps:
- task: SqlAzureDacpacDeployment@1
inputs:
azureSubscription: 'your-service-connection'
AuthenticationType: 'server'
ServerName: 'your-server.database.windows.net'
DatabaseName: 'your-database'
SqlUsername: '$(SqlUser)'
SqlPassword: '$(SqlPassword)'
deployType: 'DacpacTask'
DeploymentAction: 'Publish'
DacpacFile: '$(Build.ArtifactStagingDirectory)/Database.dacpac'
Для агентов Linux или более контроля над процессом развертывания используйте SqlPackage напрямую:
steps:
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: '8.x'
- script: dotnet tool install --global microsoft.sqlpackage
displayName: 'Install SqlPackage'
- script: |
sqlpackage /Action:Publish \
/SourceFile:$(Build.ArtifactStagingDirectory)/Database.dacpac \
/TargetConnectionString:"$(ConnectionString)"
displayName: 'Deploy database'
Другие платформы CI/CD
Для таких платформ, как GitLab CI/CD, Jenkins, CircleCI или другие, используйте SqlPackage непосредственно для создания и развертывания проектов SQL.
Сборка проекта
dotnet build ./Database.sqlproj -c Release
Разверните .dacpac
sqlpackage /Action:Publish \
/SourceFile:./bin/Release/Database.dacpac \
/TargetConnectionString:"Server=your-server;Database=your-db;User Id=user;Password=password;"