Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
s’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Cet article fournit une vue d’ensemble des options d’automatisation pour les projets SQL sur différentes plateformes de distribution de logiciels. Utilisez l’automatisation pour intégrer des projets de base de données SQL dans des pipelines CI/CD et déployer des modifications de base de données de manière cohérente et répétée.
Qu’est-ce que l’automatisation
L’automatisation des projets SQL implique généralement deux tâches clés dans un pipeline CI/CD :
Générez le projet SQL : validez le projet et produisez l’artefact de déploiement (
.dacpac) en exécutantdotnet buildle projet de base de données SQL à compiler. Si vous le souhaitez, exécutez des règles d’analyse du code pour vérifier la qualité du code pendant la génération du projet.Déployez le
.dacpac: publiez sur une base de données cible à l’aide.dacpacde SqlPackage ou d’une tâche spécifique à la plateforme. Le déploiement peut cibler Azure SQL Database, Azure SQL Managed Instance, SQL Server ou sql database dans Fabric.
Lorsque vous intégrez ces étapes à votre pipeline CI/CD, les modifications de base de données sont validées sur chaque validation et déployées de manière cohérente dans les environnements.
Concepts communs
Flux d’artefact : un pipeline classique sépare les phases de génération et de déploiement. L’étape de génération compile le projet SQL et produit un .dacpac fichier, qui est ensuite publié en tant qu’artefact de pipeline. Dans un travail de déploiement ultérieur (potentiellement après approbation manuelle), l’artefact est téléchargé et déployé sur la base de données cible. Cette séparation vous permet de générer une seule fois et de déployer le même artefact dans plusieurs environnements, ce qui garantit la cohérence.
Publier ou script : avant de déployer dans des environnements sensibles, vous pouvez passer en revue le plan de déploiement. SqlPackage prend en charge une Script action qui génère le script T-SQL qui serait exécuté pendant le déploiement, sans appliquer de modifications. Le script T-SQL fourni permet aux administrateurs de base de données ou aux réviseurs d’examiner les modifications exactes nécessaires pour appliquer l’approbation .dacpac antérieure. De même, l’action DeployReport produit un rapport XML des modifications planifiées.
Approbations et portes d’environnement : les déploiements de production nécessitent généralement des flux de travail d’approbation pour empêcher les modifications involontaires. GitHub Actions et Azure DevOps prennent en charge les approbations basées sur l’environnement. Dans GitHub, vous pouvez configurer des environnements avec des réviseurs et des minuteurs d’attente requis. Dans Azure DevOps, les environnements prennent en charge les portes d’approbation, les restrictions des heures d’ouverture et d’autres contrôles de déploiement. Ces contrôles permettent de s’assurer que les modifications de base de données sont examinées et approuvées avant d’atteindre la production.
Prerequisites
SqlPackage est multiplateforme et s’exécute sur Windows, Linux et macOS. Installez-le en tant qu’outil global .NET pour garantir un comportement cohérent entre les environnements.
Kit de développement logiciel (SDK) .NET installé sur l’agent de build.
SqlPackage installé sur l’agent de build. Vous pouvez installer SqlPackage en tant qu’outil global .NET :
dotnet tool install --global microsoft.sqlpackage
Plateformes de distribution de logiciels
Choisissez un environnement qui correspond aux exigences en matière d’outils, de conformité et de connectivité de votre équipe.
Environnements virtuels gérés
Les environnements virtuels gérés par Microsoft pour GitHub Actions hébergés et les agents Azure Pipelines incluent des outils préinstallés :
| Environnement | Kit de développement logiciel (SDK) .NET | SqlPackage |
|---|---|---|
| Windows | Préinstallé | Préinstallé |
| Linux | Préinstallé | Non préinstallé |
| macOS | Préinstallé | Non préinstallé |
Dans les environnements Linux et macOS, installez SqlPackage dans le cadre de votre workflow. Pour plus d’informations sur l’installation et le contrôle de version SqlPackage dans les pipelines, consultez SqlPackage dans les pipelines de développement.
Environnements auto-hébergés
Déployez à partir d’un exécuteur ou d’un agent auto-hébergé lorsque vous avez besoin d’un contrôle supplémentaire sur l’environnement, par exemple :
- Configuration requise pour l’isolation réseau (accès aux bases de données non exposées à l’Internet public)
- Outils personnalisés ou versions sqlPackage spécifiques
- Stratégies de conformité ou de sécurité
Vous pouvez déployer des exécuteurs auto-hébergés en tant que travaux Azure Container Apps pour une exécution serverless pilotée par les événements. Utilisez cette approche pour définir l’environnement dans un fichier Dockerfile et installer SqlPackage et d’autres outils si nécessaire.
GitHub Actions
L’action Azure SQL Deploy (azure/sql-action) offre une expérience intégrée pour le déploiement de projets et .dacpac de fichiers SQL sur Azure SQL et SQL Server à partir de n’importe quel exécuteur GitHub Actions.
Fonctionnalités clés :
-
.dacpacDéploie ,.sqlprojou.sqlscripts. - Prend en charge l’authentification SQL, l’authentification Microsoft Entra ID et l’authentification du principal de service.
- Ajoute et supprime automatiquement des règles de pare-feu temporaires pour Azure SQL Database lorsqu’elles sont combinées avec
azure/login. - Fonctionne sur les exécuteurs Windows et Linux.
Exemple : Déployer un projet SQL avec 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'
Pour les déploiements Azure SQL Database qui nécessitent une règle de pare-feu temporaire, ajoutez l’étape azure/login avant 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'
Vous pouvez également utiliser SqlPackage directement sur n’importe quel exécuteur. Pour plus d’informations, consultez SqlPackage dans les pipelines de développement.
Azure Pipelines
Azure DevOps fournit la tâche SqlAzureDacpacDeployment pour le déploiement de .dacpac fichiers et de scripts SQL sur Azure SQL Database.
Fonctionnalités clés :
- Déploie des
.dacpacfichiers ou exécute des scripts SQL. - Prend en charge l’authentification SQL, l’authentification Microsoft Entra ID et l’authentification du principal de service.
- Gère automatiquement les règles de pare-feu pour Azure SQL Database.
- Nécessite un agent Windows (utilisez SqlPackage directement sur les agents Linux).
Exemple : Déployer un .dacpac avec 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'
Pour les agents Linux ou plus de contrôle sur le processus de déploiement, utilisez directement 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'
Autres plateformes CI/CD
Pour les plateformes telles que GitLab CI/CD, Jenkins, CircleCI ou d’autres, utilisez SqlPackage directement pour générer et déployer des projets SQL.
Créer le projet
dotnet build ./Database.sqlproj -c Release
Déployez le .dacpac
sqlpackage /Action:Publish \
/SourceFile:./bin/Release/Database.dacpac \
/TargetConnectionString:"Server=your-server;Database=your-db;User Id=user;Password=password;"