Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Este artigo apresenta 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 bases de dados SQL em pipelines CI/CD e implemente alterações na base de dados de forma consistente e repetida.
O que automatizar
A automação de projetos SQL envolve tipicamente duas tarefas-chave num pipeline CI/CD:
Constrói o projeto SQL: Valida o projeto e produz o artefacto de implementação (
.dacpac) executandodotnet buildno projeto de base de dados SQL para compilar. Opcionalmente, execute regras de análise de código para verificar a qualidade do código durante a construção do projeto.Implemente o
.dacpac: Publique para.dacpacuma base de dados alvo usando SqlPackage ou uma tarefa específica da plataforma. A implementação pode direcionar Azure SQL Database, Azure SQL Managed Instance, SQL Server ou base de dados SQL no Fabric.
Quando integra estes passos no seu pipeline de CI/CD, as alterações na base de dados são validadas em cada commit e implementadas de forma consistente entre os ambientes.
Conceitos comuns
Fluxo de artefactos: Um pipeline típico separa as fases de construção e implantação. A fase de compilação compila o projeto SQL e produz um .dacpac ficheiro, que é depois publicado como um artefacto de pipeline. Num trabalho de implementação subsequente (potencialmente após aprovação manual), o artefacto é descarregado e implementado na base de dados alvo. Esta separação permite construir uma vez e implementar o mesmo artefacto em múltiplos ambientes, garantindo consistência.
Publicar ou scriptar: Antes de implementar em ambientes sensíveis, pode rever o plano de implementação. O SqlPackage suporta uma Script ação que gera o script T-SQL que seria executado durante a implementação, sem aplicar alterações. O script T-SQL fornecido permite que administradores ou revisores de bases de dados examinem as alterações exatas necessárias para aplicar a aprovação .dacpac prévia. De forma semelhante, a DeployReport ação produz um relatório XML das alterações planeadas.
Aprovações de ambiente e limites: As implementações em produção normalmente exigem fluxos de trabalho de aprovação para evitar alterações não intencionais. Tanto o GitHub Actions como o Azure DevOps suportam aprovações baseadas no ambiente. No GitHub, podes configurar ambientes com revisores e temporizadores de espera necessários. No Azure DevOps, os ambientes suportam portas de aprovação, restrições de horário de funcionamento e outros controlos de implementação. Estes controlos ajudam a garantir que as alterações à base de dados são revistas e aprovadas antes de chegarem à produção.
Pré-requisitos
O SqlPackage é multiplataforma e funciona no Windows, Linux e macOS. Instale-o como uma ferramenta .NET global para garantir um comportamento consistente em todos os ambientes.
.NET SDK instalado no agente de compilação.
SqlPackage instalado no agente de compilação. Pode instalar o SqlPackage como uma ferramenta global .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 equipa.
Ambientes virtuais gerenciados
Ambientes virtuais geridos pela Microsoft para GitHub Actions, runners alojados e agentes Azure Pipelines incluem ferramentas pré-instaladas:
| Meio Ambiente | SDK para .NET | SqlPackage |
|---|---|---|
| Windows | Preinstalled | Preinstalled |
| Linux | Preinstalled | Não pré-instalado |
| macOS | Preinstalled | Não pré-instalado |
Em ambientes Linux e macOS, instala o SqlPackage como parte do teu fluxo de trabalho. Para mais informações sobre a instalação e versionamento do SqlPackage em pipelines, consulte SqlPackage em pipelines de desenvolvimento.
Ambientes auto-hospedados
Implemente a partir de um runner ou agente auto-hospedado quando precisar de mais controlo sobre o ambiente, tais como:
- Requisitos de isolamento de rede (aceder a bases de dados não expostas à internet pública)
- Ferramentas personalizadas ou versões específicas do SqlPackage
- Políticas de conformidade ou segurança
Pode implementar runners auto-hospedados como jobs Azure Container Apps para execução orientada a eventos e serverless. Use esta abordagem para definir o ambiente num Dockerfile e instalar o SqlPackage e outras ferramentas conforme necessário.
GitHub Actions
A ação Azure SQL Deploy (azure/sql-action) proporciona uma experiência integrada para implementar projetos e .dacpac ficheiros SQL para Azure SQL e SQL Server a partir de qualquer executor de GitHub Actions.
Principais capacidades:
- Implementa
.dacpac,.sqlproj, ou.sqlscripts. - Suporta autenticação SQL, autenticação Microsoft Entra ID e autenticação principal de serviço.
- Adiciona e remove automaticamente regras temporárias de firewall para Azure SQL Database quando combinado com
azure/login. - Funciona tanto em Windows como em Linux.
Exemplo: Implementar um projeto SQL com ações no GitHub
# .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 implementações Azure SQL Database que exijam uma regra temporária de firewall, adicione o azure/login passo antes sql-actionde :
- 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'
Também podes usar o SqlPackage diretamente em qualquer runner. Para mais informações, consulte SqlPackage em pipelines de desenvolvimento.
Azure Pipelines (Pipelines do Azure)
O Azure DevOps fornece a tarefa SqlAzureDacpacDeployment para distribuir .dacpac ficheiros e scripts SQL no Azure SQL Database.
Principais capacidades:
- Implementa
.dacpacficheiros ou executa scripts SQL. - Suporta autenticação SQL, autenticação Microsoft Entra ID e autenticação principal de serviço.
- Gerem automaticamente as regras de firewall para a Azure SQL Database.
- Requer um agente Windows (usa o SqlPackage diretamente nos agentes Linux).
Exemplo: Implementar a .dacpac com 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 Linux ou maior controlo sobre o processo de implementaçã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 CI/CD
Para plataformas como GitLab CI/CD, Jenkins, CircleCI ou outras, use o SqlPackage diretamente para construir e implementar projetos SQL.
Compilar o projeto
dotnet build ./Database.sqlproj -c Release
Implante o .dacpac
sqlpackage /Action:Publish \
/SourceFile:./bin/Release/Database.dacpac \
/TargetConnectionString:"Server=your-server;Database=your-db;User Id=user;Password=password;"