Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Den här artikeln innehåller en översikt över automatiseringsalternativ för SQL-projekt på olika plattformar för programvaruleverans. Använd automatisering för att integrera SQL-databasprojekt i CI/CD-pipelines och distribuera databasändringar konsekvent och upprepade gånger.
Så här automatiserar du
Automatisering av SQL-projekt omfattar vanligtvis två viktiga uppgifter i en CI/CD-pipeline:
Skapa SQL-projektet: Verifiera projektet och skapa distributionsartefakten (
.dacpac) genom att köradotnet buildi SQL-databasprojektet för kompilering. Du kan också köra kodanalysregler för att kontrollera kodkvaliteten under projektversionen..dacpacDistribuera : Publicera.dacpactill en måldatabas med hjälp av SqlPackage eller en plattformsspecifik uppgift. Distribution kan riktas mot Azure SQL Database, Azure SQL Managed Instance, SQL Server eller SQL Database i Fabric.
När du integrerar de här stegen i din CI/CD-pipeline verifieras databasändringar vid varje incheckning och distribueras konsekvent i olika miljöer.
Vanliga begrepp
Artefaktflöde: En typisk pipeline separerar bygg- och distributionsstegen. Byggfasen kompilerar SQL-projektet och skapar en .dacpac fil som sedan publiceras som en pipelineartefakt. I ett efterföljande distributionsjobb (eventuellt efter manuellt godkännande) laddas artefakten ned och distribueras till måldatabasen. Med den här separationen kan du skapa en gång och distribuera samma artefakt till flera miljöer, vilket säkerställer konsekvens.
Publicera eller skript: Innan du distribuerar till känsliga miljöer kan du granska distributionsplanen. SqlPackage stöder en Script åtgärd som genererar T-SQL-skriptet som skulle köras under distributionen, utan att tillämpa ändringar. Med det angivna T-SQL-skriptet kan databasadministratörer eller granskare undersöka de exakta ändringar som krävs för att tillämpa .dacpac före godkännandet. På samma sätt skapar åtgärden DeployReport en XML-rapport över de planerade ändringarna.
Miljögodkännanden och grindar: Produktionsdistributioner kräver vanligtvis arbetsflöden för godkännande för att förhindra oavsiktliga ändringar. Både GitHub Actions och Azure DevOps stöder miljöbaserade godkännanden. I GitHub kan du konfigurera miljöer med nödvändiga granskare och väntetider. I Azure DevOps stöder miljöer godkännandegrindar, begränsningar för kontorstid och andra distributionskontroller. Dessa kontroller hjälper till att säkerställa att databasändringar granskas och godkänns innan de når produktion.
Förutsättningar
SqlPackage är plattformsoberoende och körs i Windows, Linux och macOS. Installera det som ett globalt .NET-verktyg för att säkerställa konsekvent beteende i olika miljöer.
.NET SDK installerat på byggagenten.
SqlPackage installerat på byggagenten. Du kan installera SqlPackage som ett globalt .NET-verktyg:
dotnet tool install --global microsoft.sqlpackage
Plattformar för programvaruleverans
Välj en miljö som matchar teamets krav på verktyg, efterlevnad och anslutning.
Hanterade virtuella miljöer
Microsoft-hanterade virtuella miljöer för GitHub Actions-värdbaserade löpare och Azure Pipelines-agenter innehåller förinstallerade verktyg:
| Miljö | .NET SDK | SqlPackage |
|---|---|---|
| Windows | Preinstalled | Preinstalled |
| Linux | Preinstalled | Inte förinstallerad |
| macOS | Preinstalled | Inte förinstallerad |
Installera SqlPackage som en del av arbetsflödet i Linux- och macOS-miljöer. Mer information om installation och versionshantering av SqlPackage i pipelines finns i SqlPackage i utvecklingspipelines.
Miljöer med egen värd
Distribuera från en lokalt installerad löpare eller agent när du behöver mer kontroll över miljön, till exempel:
- Krav på nätverksisolering (åtkomst till databaser som inte exponeras för det offentliga Internet)
- Anpassade verktyg eller specifika SqlPackage-versioner
- Efterlevnads- eller säkerhetsprinciper
Du kan distribuera lokalt installerade löpare som Azure Container Apps-jobb för händelsedriven, serverlös körning. Använd den här metoden för att definiera miljön i en Dockerfile och installera SqlPackage och andra verktyg efter behov.
GitHub Actions
Åtgärden Azure SQL Deploy (azure/sql-action) ger en integrerad upplevelse för att distribuera SQL-projekt och .dacpac -filer till Azure SQL och SQL Server från valfri GitHub Actions-löpare.
Viktiga funktioner:
- Distribuerar
.dacpac,.sqlprojeller.sqlskript. - Stöder SQL-autentisering, Microsoft Entra-ID-autentisering och autentisering med tjänstens huvudnamn.
- Lägger automatiskt till och tar bort tillfälliga brandväggsregler för Azure SQL Database i kombination med
azure/login. - Fungerar på både Windows- och Linux-löpare.
Exempel: Distribuera ett SQL-projekt med 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'
För Azure SQL Database-distributioner som kräver en tillfällig brandväggsregel lägger du till azure/login steget före 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'
Du kan också använda SqlPackage direkt på valfri löpare. Mer information finns i SqlPackage i utvecklingspipelines.
Azure-pipelines
Azure DevOps tillhandahåller uppgiften SqlAzureDacpacDeployment för att .dacpac distribuera filer och SQL-skript till Azure SQL Database.
Viktiga funktioner:
- Distribuerar
.dacpacfiler eller kör SQL-skript. - Stöder SQL-autentisering, Microsoft Entra-ID-autentisering och autentisering med tjänstens huvudnamn.
- Hanterar brandväggsregler automatiskt för Azure SQL Database.
- Kräver en Windows-agent (använd SqlPackage direkt på Linux-agenter).
Exempel: Distribuera en .dacpac med 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'
För Linux-agenter eller mer kontroll över distributionsprocessen använder du SqlPackage direkt:
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'
Andra CI/CD-plattformar
För plattformar som GitLab CI/CD, Jenkins, CircleCI eller andra använder du SqlPackage direkt för att skapa och distribuera SQL-projekt.
Bygga projektet
dotnet build ./Database.sqlproj -c Release
Distribuera .dacpac
sqlpackage /Action:Publish \
/SourceFile:./bin/Release/Database.dacpac \
/TargetConnectionString:"Server=your-server;Database=your-db;User Id=user;Password=password;"