Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Este artigo fornece uma visão geral das opções de automação para projetos SQL em diferentes plataformas de entrega de software. Use a automação para integrar projetos de banco de dados SQL em pipelines de CI/CD e implantar alterações de banco de dados de forma consistente e repetida.
O que automatizar
A automação de projetos SQL normalmente envolve duas tarefas principais em um pipeline de CI/CD:
Crie o projeto SQL: valide o projeto e produza o artefato de implantação (
.dacpac) em execuçãodotnet buildno projeto do banco de dados SQL a ser compilado. Opcionalmente, execute regras de análise de código para verificar a qualidade do código durante o build do projeto.Implante o
.dacpac: publicar em.dacpacum banco de dados de destino usando o SqlPackage ou uma tarefa específica da plataforma. A implantação pode ter como destino o Banco de Dados SQL do Azure, a Instância Gerenciada de SQL do Azure, o SQL Server ou o Banco de Dados SQL no Fabric.
Quando você integra essas etapas ao pipeline de CI/CD, as alterações de banco de dados são validadas em cada confirmação e implantadas consistentemente entre ambientes.
Conceitos comuns
Fluxo de artefatos: um pipeline típico separa os estágios de build e implantação. O estágio de build compila o projeto SQL e produz um .dacpac arquivo, que é publicado como um artefato de pipeline. Em um trabalho de implantação subsequente (potencialmente após a aprovação manual), o artefato é baixado e implantado no banco de dados de destino. Essa separação permite que você crie uma vez e implante o mesmo artefato em vários ambientes, garantindo consistência.
Publicar ou script: antes de implantar em ambientes confidenciais, você pode examinar o plano de implantação. O SqlPackage dá suporte a uma Script ação que gera o script T-SQL que seria executado durante a implantação, sem aplicar alterações. O script T-SQL fornecido permite que os administradores ou revisores de banco de dados examinem as alterações exatas necessárias para aplicar a .dacpac aprovação anterior. Da mesma forma, a ação DeployReport produz um relatório XML das alterações planejadas.
Aprovações e portões de ambiente: as implantações de produção normalmente exigem fluxos de trabalho de aprovação para evitar alterações não intencionais. O GitHub Actions e o Azure DevOps dão suporte a aprovações baseadas em ambiente. No GitHub, você pode configurar ambientes com revisores e temporizadores de espera necessários. No Azure DevOps, os ambientes dão suporte a portões de aprovação, restrições de horário comercial e outros controles de implantação. Esses controles ajudam a garantir que as alterações de banco de dados sejam revisadas e aprovadas antes de atingir a produção.
Pré-requisitos
O SqlPackage é multiplataforma e é executado no Windows, linux e macOS. Instale-o como uma ferramenta global do .NET para garantir um comportamento consistente entre ambientes.
SDK do .NET instalado no agente de build.
SqlPackage instalado no agente de build. Você pode instalar o SqlPackage como uma ferramenta global do .NET:
dotnet tool install --global microsoft.sqlpackage
Plataformas de entrega de software
Escolha um ambiente que corresponda aos requisitos de ferramentas, conformidade e conectividade da sua equipe.
Ambientes virtuais gerenciados
Os ambientes virtuais gerenciados pela Microsoft para os executores hospedados do GitHub Actions e os agentes do Azure Pipelines incluem ferramentas pré-instaladas:
| Ambiente | SDK do .NET | SqlPackage |
|---|---|---|
| Windows | Pré-instalado | Pré-instalado |
| Linux | Pré-instalado | Não pré-instalado |
| macOS | Pré-instalado | Não pré-instalado |
Em ambientes Linux e macOS, instale o SqlPackage como parte do fluxo de trabalho. Para obter mais informações sobre a instalação e o controle de versão do SqlPackage em pipelines, consulte SqlPackage em pipelines de desenvolvimento.
Ambientes auto-hospedados
Implante de um executor ou agente auto-hospedado quando precisar de mais controle sobre o ambiente, como:
- Requisitos de isolamento de rede (acessando bancos de dados não expostos à Internet pública)
- Ferramentas personalizadas ou versões específicas do SqlPackage
- Políticas de conformidade ou segurança
Você pode implantar executores auto-hospedados como trabalhos dos Aplicativos de Contêiner do Azure para execução sem servidor controlada por eventos. Use essa abordagem para definir o ambiente em um Dockerfile e instalar o SqlPackage e outras ferramentas, conforme necessário.
GitHub Actions
A ação de Implantação de SQL do Azure (azure/sql-action) fornece uma experiência integrada para implantar projetos e .dacpac arquivos SQL no SQL do Azure e no SQL Server de qualquer executor do GitHub Actions.
Principais capacidades:
-
.dacpacImplanta,.sqlprojou.sqlscripts. - Dá suporte à autenticação SQL, à autenticação da ID do Microsoft Entra e à autenticação da entidade de serviço.
- Adiciona e remove automaticamente regras de firewall temporárias para o Banco de Dados SQL do Azure quando combinadas com
azure/login. - Funciona em ambos os executores do Windows e do Linux.
Exemplo: implantar um projeto SQL com o 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'
Para implantações do Banco de Dados SQL do Azure que exigem uma regra de firewall temporária, adicione a azure/login etapa antes 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'
Você também pode usar o SqlPackage diretamente em qualquer executor. Para obter mais informações, consulte SqlPackage em pipelines de desenvolvimento.
Azure Pipelines
O Azure DevOps fornece a tarefa SqlAzureDacpacDeployment para implantar .dacpac arquivos e scripts SQL no Banco de Dados SQL do Azure.
Principais capacidades:
-
.dacpacImplanta arquivos ou executa scripts SQL. - Dá suporte à autenticação SQL, à autenticação da ID do Microsoft Entra e à autenticação da entidade de serviço.
- Gerencia automaticamente as regras de firewall do Banco de Dados SQL do Azure.
- Requer um agente do Windows (use SqlPackage diretamente em agentes do Linux).
Exemplo: implantar um .dacpac com o 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'
Para agentes do Linux ou mais controle sobre o processo de implantação, use o SqlPackage diretamente:
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'
Outras plataformas de CI/CD
Para plataformas como a CI/CD do GitLab, Jenkins, CircleCI ou outras, use o SqlPackage diretamente para criar e implantar projetos SQL.
Compilar o projeto
dotnet build ./Database.sqlproj -c Release
Implantar o .dacpac
sqlpackage /Action:Publish \
/SourceFile:./bin/Release/Database.dacpac \
/TargetConnectionString:"Server=your-server;Database=your-db;User Id=user;Password=password;"