Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Tento článek obsahuje přehled možností automatizace pro projekty SQL na různých platformách pro doručování softwaru. Pomocí automatizace můžete integrovat projekty databáze SQL do kanálů CI/CD a opakovaně nasazovat změny databáze.
Co automatizovat
Automatizace projektů SQL obvykle zahrnuje dva klíčové úlohy v kanálu CI/CD:
Sestavení projektu SQL: Ověřte projekt a vytvořte artefakt nasazení (
.dacpac) spuštěnímdotnet buildv projektu databáze SQL ke kompilaci. Volitelně můžete spouštět pravidla analýzy kódu , která kontrolují kvalitu kódu během sestavování projektu.Nasaďte :
.dacpacPublikování.dacpacdo cílové databáze pomocí SqlPackage nebo úlohy specifické pro platformu. Nasazení může cílit na Službu Azure SQL Database, spravovanou instanci Azure SQL, SQL Server nebo databázi SQL v prostředcích infrastruktury.
Když tyto kroky integrujete do kanálu CI/CD, změny databáze se ověřují při každém potvrzení a nasazují se konzistentně napříč prostředími.
Běžné pojmy
Tok artefaktů: Typický kanál odděluje fáze sestavení a nasazení. Fáze sestavení zkompiluje projekt SQL a vytvoří .dacpac soubor, který se pak publikuje jako artefakt kanálu. V následné úloze nasazení (potenciálně po ručním schválení) se artefakt stáhne a nasadí do cílové databáze. Toto oddělení umožňuje sestavit jeden a nasadit stejný artefakt do více prostředí a zajistit tak konzistenci.
Publikování nebo skript: Před nasazením do citlivých prostředí můžete zkontrolovat plán nasazení. SqlPackage podporuje Script akci, která vygeneruje skript T-SQL, který by se spustil během nasazení bez použití změn. Zadaný skript T-SQL umožňuje správcům databáze nebo revidujícím zkoumat přesné změny potřebné k použití před schválením .dacpac . Podobně akce DeployReport vytvoří sestavu XML plánovaných změn.
Schválení a brány prostředí: Produkční nasazení obvykle vyžadují pracovní postupy schválení, aby se zabránilo nezamýšleným změnám. GitHub Actions i Azure DevOps podporují schvalování na základě prostředí. Na GitHubu můžete nakonfigurovat prostředí s požadovanými kontrolory a časovači čekání. Prostředí v Azure DevOps podporují schvalovací brány, omezení pracovních hodin a další ovládací prvky nasazení. Tyto ovládací prvky pomáhají zajistit, aby se změny databáze před dosažením produkčního prostředí kontrolovaly a schválily.
Požadavky
SqlPackage je multiplatformní a běží ve Windows, Linuxu a macOS. Nainstalujte ho jako globální nástroj .NET, abyste zajistili konzistentní chování napříč prostředími.
Sada .NET SDK nainstalovaná v agentu sestavení
SqlPackage nainstalovaný v agentu sestavení. SqlPackage můžete nainstalovat jako globální nástroj .NET:
dotnet tool install --global microsoft.sqlpackage
Platformy pro doručování softwaru
Zvolte prostředí, které odpovídá požadavkům vašeho týmu na nástroje, dodržování předpisů a možnosti připojení.
Spravovaná virtuální prostředí
Virtuální prostředí spravovaná Microsoftem pro spouštěče hostované službou GitHub Actions a agenty Azure Pipelines zahrnují předinstalované nástroje:
| Životní prostředí | .NET SDK | SqlPackage |
|---|---|---|
| Windows | Preinstalled | Preinstalled |
| Linux | Preinstalled | Není předinstalováno |
| macOS | Preinstalled | Není předinstalováno |
V prostředích s Linuxem a macOS nainstalujte SqlPackage jako součást pracovního postupu. Další informace o instalaci a správě verzí SqlPackage v kanálech najdete v tématu SqlPackage ve vývojových kanálech.
Místní prostředí
Nasazení z místního spouštěče nebo agenta, pokud potřebujete větší kontrolu nad prostředím, například:
- Požadavky na izolaci sítě (přístup k databázím, které nejsou vystaveny veřejnému internetu)
- Vlastní nástroje nebo konkrétní verze SqlPackage
- Zásady dodržování předpisů nebo zabezpečení
Spouštěče v místním prostředí můžete nasadit jako úlohy Azure Container Apps pro spouštění bez serveru řízené událostmi. Tento přístup použijte k definování prostředí v souboru Dockerfile a instalaci SqlPackage a dalších nástrojů podle potřeby.
GitHub Actions
Akce Nasazení Azure SQL (azure/sql-action) poskytuje integrované prostředí pro nasazování projektů a .dacpac souborů SQL do Azure SQL a SQL Serveru z libovolného spouštěče GitHub Actions.
Klíčové funkce:
- Nasadí
.dacpacnebo.sqlproj.sqlskripty. - Podporuje ověřování SQL, ověřování Microsoft Entra ID a ověřování instančního objektu.
- Automaticky přidá a odebere dočasná pravidla brány firewall pro službu Azure SQL Database v kombinaci s
azure/login. - Funguje na spouštěčích Pro Windows i Linux.
Příklad: Nasazení projektu SQL pomocí 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'
Pro nasazení služby Azure SQL Database, která vyžadují dočasné pravidlo brány firewall, přidejte azure/login tento krok před 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 můžete také použít přímo na libovolném spouštěči. Další informace najdete v tématu SqlPackage ve vývojových kanálech.
Azure Pipelines
Azure DevOps poskytuje úlohu SqlAzureDacpacDeployment pro nasazování .dacpac souborů a skriptů SQL do služby Azure SQL Database.
Klíčové funkce:
- Nasadí
.dacpacsoubory nebo spustí skripty SQL. - Podporuje ověřování SQL, ověřování Microsoft Entra ID a ověřování instančního objektu.
- Automaticky spravuje pravidla brány firewall pro službu Azure SQL Database.
- Vyžaduje agenta systému Windows (použijte SqlPackage přímo na agentech Linuxu).
Příklad: Nasazení s .dacpac využitím 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'
Pro agenty Linuxu nebo větší kontrolu nad procesem nasazení použijte SqlPackage přímo:
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'
Další platformy CI/CD
Pro platformy, jako je CI/CD GitLab, Jenkins, CircleCI nebo jiné, použijte SqlPackage přímo k sestavování a nasazování projektů SQL.
Sestavení projektu
dotnet build ./Database.sqlproj -c Release
Nasadit .dacpac
sqlpackage /Action:Publish \
/SourceFile:./bin/Release/Database.dacpac \
/TargetConnectionString:"Server=your-server;Database=your-db;User Id=user;Password=password;"