Share via


Procédure : valider un package DAC

Il est bon de passer en revue le contenu d'un package DAC avant son déploiement en production et de valider les mises à niveau avant d'utiliser un package DAC en vue de mettre à niveau une DAC existante. C'est particulièrement vrai lors du déploiement de packages qui n'ont pas été développés dans votre organisation.

Affichage du contenu d'une DAC

Il existe deux mécanismes d'affichage du contenu d'un package DAC. Vous pouvez créer un projet DAC dans Microsoft Visual Studio 2010 et importer le package DAC dans le projet. Vous pouvez décompresser le contenu du package dans un dossier.

Remarque relative à la sécuritéRemarque relative à la sécurité

Nous vous recommandons de ne pas déployer de packages DAC provenant de sources inconnues ou non approuvées. Ces 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, exécutez DBCC CHECKDB sur la base de données sur un serveur autre qu'un serveur de production 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.

Un moyen de consulter le contenu d'un package de DAC est de créer un projet DAC dans Microsoft Visual Studio 2010 et d'importer le package dans le projet. Vous pouvez ensuite utiliser l'Explorateur de solution pour ouvrir tous les fichiers dans la DAC, tels que la stratégie de sélection du serveur et les scripts de pré- et post-déploiement. Vous pouvez utiliser le Mode schéma pour examiner tous les objets situés dans le schéma et en particulier le code dans des objets, par exemple les fonctions ou les procédures stockées.

Si vous n'avez pas accès à Visual Studio 2010, vous pouvez décompresser le contenu de la DAC dans un dossier. Vous pouvez ensuite ouvrir les scripts Transact-SQL dans l'Éditeur de requête du moteur de base de données dans SQL Server Management Studio et les fichiers dans des outils tels que bloc-notes. Pour obtenir des instructions, consultez Procédure : décompresser un package DAC.

Validation et mise à niveau à l'aide d'un Assistant

Avant d'effectuer la mise à niveau d'une DAC, il est bon de vérifier les éventuelles modifications apportées à la base de données après le déploiement initial de la DAC, et de passer en revue le script des modifications qui seront apportées par la mise à niveau. Vous pouvez utiliser l'Assistant Mise à niveau de l'application de la couche Données pour afficher ces informations. Vous pouvez consulter les modifications apportées à la base de données sur la page Détecter les modifications et les actions de mise à niveau sur la page Résumé. Cliquez sur Annuler, sur la page Résumé, si vous ne souhaitez pas effectuer la mise à niveau. Pour plus d'informations, consultez Procédure : mettre à niveau une application de couche Données.

Afficher les modifications apportées à la base de données à l'aide de PowerShell

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, vérifiez si des modifications susceptibles d'affecter la mise à niveau ont été apportées à la base de données.

Notes

Les exemples PowerShell apportés dans cette rubrique utilisent les méthodes introduites dans DAC Framework 1.1 Feature Pack. Vous pouvez télécharger le Feature Pack à partir de cette page Web.

Créez un fichier de script PowerShell (.ps1) contenant le code ci-dessous :

  1. Ajoutez du code pour créer un objet serveur SMO et le définir sur l'instance contenant la DAC que vous souhaitez mettre à niveau. Dans cet exemple, un objet serveur est défini comme l'instance par défaut sur l'ordinateur local :

    ## Set a SMO Server object to the default instance on the local computer.
    CD SQLSERVER:\SQL\localhost\DEFAULT
    $srv = get-item .
    
  2. Ajoutez du code pour ouvrir un objet ServerConnection et vous connecter à la même instance.

    ## 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)
    
  3. Ajoutez du code pour spécifier la DAC précédemment déployée, puis créez un objet ChangeResults et redirigez-le vers un fichier texte pour générer un rapport simple des ajouts, suppressions et modifications d'objets.

    ## 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
    

Exécutez le fichier .ps1 depuis une session PowerShell dans laquelle vous aurez chargé les composants logiciels enfichables SQL Server PowerShell, ou bien depuis l'invite de commandes sqlps.

Générer un script de mise à niveau à l'aide de PowerShell

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 fichier de script contenant les instructions Transact-SQL qui seront exécutées durant la mise à niveau, puis passer en revue ce script. Créez un fichier de script PowerShell (.ps1) contenant le code ci-dessous :

  1. Ajoutez du code pour créer un objet serveur SMO et le définir sur l'instance contenant la DAC que vous souhaitez mettre à niveau. Dans cet exemple, un objet serveur est défini comme l'instance par défaut sur l'ordinateur local :

    ## Set a SMO Server object to the default instance on the local computer.
    CD SQLSERVER:\SQL\localhost\DEFAULT
    $srv = get-item .
    
  2. Ajoutez du code pour ouvrir un objet ServerConnection et vous connecter à la même instance.

    ## 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)
    
  3. Ajoutez du code pour charger le fichier du package DAC. Dans cet exemple, le fichier MyApplication.dacpac est chargé.

    ## Load the DAC package file.
    $dacpacPath = "C:\MyDACs\MyApplication.dacpac"
    $fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)
    $dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)
    
  4. Ajoutez du code pour spécifier la DAC précédemment déployée, puis créez un script Transact-SQL et redirigez-le vers un fichier .sql. Fermez le flux de fichier utilisé pour lire le nouveau package DAC.

    ## 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()
    

Exécutez le fichier .ps1 depuis une session PowerShell dans laquelle vous aurez chargé les composants logiciels enfichables SQL Server PowerShell, ou bien depuis l'invite de commandes sqlps.

Comparaison entre des DAC

Avant de mettre à niveau une DAC, vous pouvez également passer en revue les différences qui existent entre l'ancienne et la nouvelle DAC au niveau des bases de données et des objets d'instance. 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 de DAC dans des projets DAC dans Visual Studio 2010, vous pouvez utiliser l'outil Comparaison de schémas pour analyser les différences entre les deux DAC.

Si vous n'avez pas accès à Visual Studio 2010, décompressez les DAC dans des dossiers séparés. Vous pouvez utiliser ensuite un outil de comparaison, tel que l'utilitaire WinDiff, pour analyser les différences.