Share via


Valider un package DAC

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Il est conseillé d'examiner le contenu d'un package DAC avant de le déployer en production et de valider les actions de mise à niveau avant de mettre à niveau une DAC existante. Ceci tout particulièrement lors du déploiement de packages qui n'ont pas été développés dans votre organisation.

Les méthodes de mise à niveau d’un package DAC sont les suivantes :

Packages DAC non approuvés

Nous vous recommandons de ne pas déployer un package DAC provenant de sources inconnues ou non approuvées. Ces contrôleurs de domaine peuvent contenir du code malveillant qui peut exécuter du code Transact-SQL inattendu ou provoquer des erreurs en modifiant le schéma. Avant d’utiliser une DAC à partir d’une source inconnue ou non approuvée, déployez-la sur une instance de test isolée du moteur de base de données, exécutez DBCC CHECKDB (Transact-SQL) sur la base de données et examinez également le code, comme les procédures stockées ou d’autres codes définis par l’utilisateur, dans la base de données.

Afficher le contenu d'une DAC

Il existe deux mécanismes permettant d’afficher le contenu d’un package DAC (Data-Tier Application) :

  • importer le package DAC dans un projet SQL dans les outils de développement SQL Server
  • publier le package DAC sur une instance de test

Importer une DAC dans les outils de développement SQL Server

  1. Dans le menu Fichier, sélectionnez Nouveau, puis Projet.

  2. Sélectionnez le modèle de projet SQL Server , puis spécifiez un Nom, un Emplacementet un Nom de solution.

  3. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet, puis sélectionnez Propriétés....

  4. Sous l’onglet Paramètres du projet , dans la section Type de sortie , cochez la case Application de la couche Données (fichier .dacpac) , puis fermez la boîte de dialogue de propriétés.

  5. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet, puis sélectionnez Importer une application de la couche Données....

  6. Utilisez l’ Explorateur de solutions pour ouvrir tous les fichiers de la DAC, tels que la stratégie de sélection du serveur et les scripts de pré- et post-déploiement.

  7. Utilisez le Mode schéma pour examiner tous les objets du schéma, en particulier le code des objets, comme les fonctions ou les procédures stockées.

Publier le package DAC sur une instance de test

Plusieurs outils sont disponibles pour publier un package DAC sur une instance de test. L’extension Dacpac SQL Server pour Azure Data Studio contient l’Assistant Application de la couche Données. Nous allons suivre la publication d’un package DAC sur une instance de test.

  1. Si nécessaire, déployez une instance de test à l’aide de l’Assistant Déploiement.

  2. Connectez-vous à votre instance de test dans Azure Data Studio et cliquez avec le bouton droit sur le nœud du serveur. Sélectionnez l’Assistant Application de la couche Données dans le menu contextuel.

  3. À l’étape 1 de l’Assistant, sélectionnez Déployer un fichier .dacpac d’application de la couche Données sur une instance de SQL Server

  4. Une étape 2 de l’Assistant, entrez l’emplacement du fichier et sélectionnez Nouvelle base de données pour la base de données cible. Entrez un nom de base de données.

  5. À l’étape 3 de l’Assistant, passez en revue le résumé avant de sélectionner Déployer.

  6. Une fois le déploiement terminé, passez en revue le contenu de la base de données dans l’Explorateur d’objets.

  7. FACULTATIF : cliquez avec le bouton droit sur la base de données dans l’Explorateur d’objets et sélectionnez Créer un projet à partir de la base de données pour générer un projet SQL à partir de la base de données.

Afficher les modifications apportées à la base de données

Après la version actuelle de la DAC déployée en production, des modifications ont pu être apportées directement à la base de données associée qui peuvent être en conflit avec le schéma défini dans une nouvelle version de la DAC. Avant la mise à niveau vers une nouvelle version de la DAC, vérifiez si de telles modifications ont été apportées à la base de données. Dans plusieurs scénarios, vous pouvez voir la différence entre une base de données et un package DAC. Par exemple, des modifications peuvent avoir été apportées directement à la base de données associée qui peut entrer en conflit avec le schéma défini dans une nouvelle version de la DAC.

Toutes les bases de données

Afficher les modifications de base de données à l’aide de la comparaison de schémas

Afficher les modifications de base de données à l’aide de l’interface CLI SqlPackage

L’interface CLI SqlPackage peut être utilisée avec l’action DeployReport pour afficher les différences entre un fichier .dacpac et une base de données par le biais des actions qui seraient effectuées si le fichier .dacpac a été publié dans la base de données.

Bases de données inscrites en tant qu’application de la couche Données

Afficher les modifications de base de données à l’aide d’un Assistant

  1. Exécutez l’Assistant Mettre à niveau une application de la couche Données , en spécifiant la DAC actuellement déployée et le package DAC qui contient la nouvelle version de la DAC.

  2. Sur la page de Détecter les modifications , examinez le rapport des modifications apportées à la base de données.

  3. Sélectionnez Annuler si vous ne souhaitez pas poursuivre la mise à niveau.

  4. Pour plus d’informations sur l’utilisation de l’Assistant, consultez Mettre à niveau une application de la couche Données.

Afficher les modifications de base de données à l’aide de PowerShell

  1. Créez un objet serveur SMO et définissez-le sur l'instance qui contient la DAC à afficher.

  2. Ouvrez un objet ServerConnection et connectez-vous à la même instance.

  3. Spécifiez le nom de la DAC dans une variable.

  4. Utilisez la méthode GetDatabaseChanges() pour récupérer un objet ChangeResults , et redirigez l’objet vers un fichier texte pour générer un rapport simple des objets nouveaux, supprimés et modifiés.

L’exemple suivant signale toutes les modifications apportées à la base de données qui ont été apportées dans une DAC déployée nommée MyApplication.

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  
  
## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  
  
## Specify the DAC instance name.  
$dacName  = "MyApplication"  
  
## Generate the change list and save to file.  
$dacChanges = $dacstore.GetDatabaseChanges($dacName) | Out-File -Filepath C:\DACScripts\MyApplicationChanges.txt  

Afficher les modifications de base de données à l’aide de l’interface CLI SqlPackage

L’interface CLI SqlPackage peut être utilisée avec l’action DriftReport pour afficher les modifications apportées à une base de données depuis sa dernière inscription.

Afficher les actions de mise à niveau

Toutes les bases de données

Afficher les modifications de base de données à l’aide de la publication de projet SQL

  • À l’aide de l’extension Projets SQL Database dans Azure Data Studio, les actions à entreprendre lorsqu’un projet SQL sera publié sur une base de données peuvent être consultées sur Windows, macOS et Linux en sélectionnant « Générer un script » pendant le processus de publication.

  • À l’aide de SQL Server Data Tools dans Visual Studio, les actions à entreprendre lorsqu’un projet SQL sera publié sur une base de données peuvent être consultées sur Windows en tant que script de déploiement.

Affichez les actions de mise à niveau à l’aide de l’interface CLI SqlPackage. L’interface CLI SqlPackage peut être utilisée avec l’actionDeployReport pour afficher les différences entre un fichier .dacpac et une base de données via les actions qui seraient effectuées si le fichier .dacpac a été publié dans la base de données.

Bases de données inscrites en tant qu’application de la couche Données

Avant d’utiliser une nouvelle version d’un package DAC pour mettre à niveau une DAC déployée à partir d’un package DAC antérieur, vous pouvez générer un rapport qui contient les instructions Transact-SQL qui seront exécutées pendant la mise à niveau, puis passer en revue les instructions.

Signaler des actions de mise à niveau à l’aide d’un Assistant

  1. Exécutez l’Assistant Mettre à niveau une application de la couche Données , en spécifiant la DAC actuellement déployée et le package DAC qui contient la nouvelle version de la DAC.

  2. Sur la page Résumé , examinez le rapport des actions de mise à niveau.

  3. Sélectionnez Annuler si vous ne souhaitez pas poursuivre la mise à niveau.

  4. Pour plus d’informations sur l’utilisation de l’Assistant, consultez Mettre à niveau une application de la couche Données.

Signaler des actions de mise à niveau à l’aide de PowerShell

  1. Créez un objet serveur SMO et définissez-le sur l'instance qui contient la DAC déployée.

  2. Ouvrez un objet ServerConnection et connectez-vous à la même instance.

  3. Utilisez System.IO.File pour charger le fichier de package DAC.

  4. Spécifiez le nom de la DAC dans une variable.

  5. Utilisez la méthode GetIncrementalUpgradeScript() pour obtenir la liste des instructions Transact-SQL qui seraient exécutées par une mise à niveau et redirigez cette liste vers un fichier texte.

  6. Fermez le flux de fichier utilisé pour lire le fichier de package DAC.

L’exemple suivant signale les instructions Transact-SQL qui seraient exécutées pour mettre à niveau une DAC nommée MyApplication vers le schéma défini dans un fichier MyApplication2017.dacpac.

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  
  
## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  
  
## Load the DAC package file.  
$dacpacPath = "C:\MyDACs\MyApplication2017.dacpac"  
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)  
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)  
  
## Specify the DAC instance name.  
$dacName  = "MyApplication"  
  
## Generate the upgrade script and save to file.  
$dacstore.GetIncrementalUpgradeScript($dacName, $dacType) | Out-File -Filepath C:\DACScripts\MyApplicationUpgrade.sql  
  
## Close the filestream to the new DAC package.  
$fileStream.Close()  

Comparer des DAC

Avant de mettre à niveau une DAC, il est conseillé d'examiner les différences dans la base de données et les objets au niveau de l'instance entre les DAC actuelles et nouvelles. Si vous ne disposez pas d'une copie du package de la DAC actuelle, vous pouvez extraire un package de la base de données actuelle.

Si vous importez les deux packages DAC dans des projets DAC dans les outils de développement de SQL Server, vous pouvez utiliser l'outil Comparaison de schémas pour analyser les différences entre les deux DAC.

Ou bien, décompressez les DAC dans des dossiers distincts. Vous pouvez ensuite utiliser un outil de comparaison, tel que l'utilitaire WinDiff, pour analyser les différences.

Voir aussi

Applications de la couche Données
Déployer une application de la couche Données
Mettre à niveau une application de la couche Données