Partager via


Valider un package DAC

S’applique à : SQL Server Base de données Azure SQL Azure 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. De telles DAC peuvent contenir du code malveillant susceptible d'exécuter un code Transact-SQL indésirable ou de provoquer des erreurs en modifiant le schéma. Avant d’utiliser une DAC provenant 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, puis exécutez DBCC CHECKDB (Transact-SQL) sur la base de données et examinez également le code (par exemple les procédures stockées ou tout autre code défini par l’utilisateur) contenu dans la base de données.

Afficher le contenu d'une DAC

Il existe deux mécanismes d'affichage du contenu d'un package d'application de la couche Données (DAC) :

  • importer le package DAC vers un projet SQL dans les outils de SQL Server Développeur
  • publier le package DAC sur une instance de test

Importer une DAC dans les outils de SQL Server Développeur

  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 de 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 et 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 de l’Application de la couche Données. Nous allons passer en revue 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 de déploiement.

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

  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. À l’é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 de 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 pourrez vouloir afficher la différence entre une base de données et un package DAC. Par exemple, 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.

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 CLI SqlPackage

L’interface CLI SqlPackage peut être utilisée avec l’action DeployReport pour afficher les différences entre un .dacpac et une base de données par le biais des actions qui seraient effectuées si le .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 de 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 CLI SqlPackage

L’interface CLI SqlPackage peut être utilisée avec l’action DriftReport pour afficher les modifications qui ont été 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

Affichez les actions de mise à niveau à l’aide de l’interface CLI SqlPackage. L’interface CLI SqlPackage peut être utilisée avecl’action DeployReport pour afficher les différences entre un .dacpac et une base de données par le biais des actions qui seraient effectuées si le .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 en vue de mettre à niveau une DAC déployée à partir d'une version antérieure d'un package DAC, vous pouvez générer un rapport contenant les instructions Transact-SQL qui seront exécutées durant la mise à niveau, puis passer en revue ces instructions.

Signaler les 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 les 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 exécutées pour mettre à niveau une application 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