Décompresser un package DAC

Une DAC est une unité autonome de l’ensemble du modèle de base de données et est portable dans un artefact appelé package DAC ou .dacpac. Cet article décrit plusieurs façons de décompresser le modèle de base de données à partir d’un fichier .dacpac pour Windows, macOS et Linux.

Avertissement

Nous vous recommandons de ne pas déployer un package DAC provenant de sources inconnues ou non approuvées. Ces DAC peuvent contenir du code malveillant susceptible d'exécuter un code indésirable ou de 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, décompressez la DAC et examinez le code, comme les procédures stockées ou d’autres codes définis par l’utilisateur.

Les options d’examen du contenu d’un dacpac sont les suivantes :

  • importation de .dacpac dans un projet SQL dans Visual Studio
  • décompression du fichier pour afficher le contenu XML
  • déploiement de .dacpac sur une instance de test
  • appel de la Unpack() méthode à partir de l’API Microsoft.SqlServer.DacFx .NET

Importer le fichier .dacpac dans un projet SQL dans Visual Studio

L’importation d’un fichier .dacpac dans un projet SQL dans Visual Studio entraîne la transformation du contenu de .dacpac en fichiers .sql et organisé en dossiers. Après l’importation, les scripts post-déploiement et les scripts de prédéploiement à partir de .dacpac sont visibles dans l’Explorateur de solutions.

  1. Installez SQL Server Data Tools dans le cadre de Visual Studio et créez un projet SQL.

  2. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet vide, puis sélectionnez Importer, puis dans un package d’application de la couche Données.

Décompresser le fichier .dacpac pour afficher le contenu XML

La décompression du fichier .dacpac entraîne la disponibilité du contenu XML brut pour l’affichage dans un éditeur de texte. Lorsque vous recherchez un composant spécifique dans .dacpac, il peut s’agir d’une méthode rapide pour accéder au contenu.

  1. Remplacez l’extension de fichier dans le fichier .dacpac par .zip.

  2. Décompressez le fichier .zip à l’aide de l’utilitaire fourni par votre système d’exploitation. Pour décompresser un fichier à partir de la ligne de commande :

    unzip AdventureWorks.dacpac
    
  3. Le contenu obtenu inclut DacMetadata.xml, Origin.xmlet model.xml.

Déployer .dacpac sur une instance de test

Le déploiement de .dacpac sur une instance de test entraîne la publication du contenu de .dacpac dans une base de données où les objets peuvent être parcourus à partir de différents outils de base de données connectés.

Note

L’une des options de création d’une instance de test localement consiste à utiliser SQL Server dans Docker.

Déployer .dacpac à l’aide d’Azure Data Studio

  1. Installez l’extension dacpac SQL Server dans Azure Data Studio.

  2. Connectez-vous à l’instance souhaitée. Cliquez avec le bouton droit sur le nœud du serveur et sélectionnez l’Assistant Application de la couche Données dans le menu.

  3. Sélectionnez l’option de déploiement dans l’Assistant et définissez l’option Base de données cible sur Nouvelle base de données.

  4. Après le déploiement, accédez à la base de données sur le serveur connecté dans l’Explorateur d’objets pour parcourir les objets de base de données.

Déployer .dacpac à l’aide de SqlPackage

  1. Installez SqlPackage.

  2. Utilisez l’interface CLI SqlPackage pour publier le fichier .dacpac sur l’instance souhaitée. Pour obtenir des exemples de commandes pour publier un fichier .dacpac dans une base de données, consultez les exemples de publication SqlPackage.

Outils supplémentaires avec les fonctionnalités de déploiement .dacpac

Au-delà d’Azure Data Studio et sqlPackage, de nombreux autres outils peuvent être utilisés pour déployer un fichier .dacpac sur une base de données. Voici quelques exemples :

  • SQL Server Management Studio
  • Visual Studio : SQL Server Data Tools
  • [PowerShell

Appeler la Unpack() méthode

L’API .NET Microsoft.SqlServer.DacFx fournit une méthode permettant de décompresser un fichier .dacpac dans un dossier, qui peut être utilisé pour décompresser par programmation un fichier .dacpac dans un dossier comme indiqué. L’exemple d’application .NET ci-dessous prend deux arguments, le chemin d’accès au fichier .dacpac et le chemin d’accès au dossier de sortie, et le résultat est le contenu du fichier .dacpac décompressé en 3 fichiers XML et un seul fichier .sql contenant tous les objets de base de données.

using Microsoft.SqlServer.Dac;

namespace DacUnpack
{
    class Program
    {
        static void Main(string[] args)
        {
            var dacpacPath = args[0];
            var outputPath = args[1];

            if (!Directory.Exists(outputPath))
            {
                Directory.CreateDirectory(outputPath);
            }

            Console.WriteLine("Unpacking {0} to {1}", dacpacPath, outputPath);
            using(DacPackage dacpac = DacPackage.Load(dacpacPath))
            {
                dacpac.Unpack(outputPath);
            }
        }
    }
}

Voir aussi