Entpacken eines DAC-Pakets

Ein DAC ist eine eigenständige Einheit des gesamten Datenbankmodells und ist in einem Artefakt portierbar, das als DAC-Paket oder .DACPAC bezeichnet wird. In diesem Artikel werden verschiedene Möglichkeiten zum Entpacken des Datenbankmodells aus einer .DACPAC für Windows, macOS und Linux beschrieben.

Warnung

Das Bereitstellen eines DAC-Pakets aus unbekannten oder nicht vertrauenswürdigen Quellen wird nicht empfohlen. Solche DACs können schädlichen Code enthalten, der möglicherweise unbeabsichtigten -Code ausführt oder Fehler verursacht, indem er das Schema ändert. Bevor Sie eine DAC aus einer unbekannten oder nicht vertrauenswürdigen Quelle verwenden, sollten Sie sie auf einer isolierten Datenbank-Engine-Testinstanz bereitstellen, die DAC entpacken und den Code, z. B. gespeicherte Prozeduren oder anderen benutzerdefinierten Code, untersuchen.

Zu den Optionen für die Untersuchung des Inhalts eines DACPAC gehören:

  • Importieren der .DACPAC in ein SQL-Projekt in Visual Studio
  • Dekomprimieren der Datei zum Anzeigen des XML-Inhalts
  • Bereitstellen von .DACPAC in einer Testinstanz
  • Aufrufen der Unpack()-Methode aus der Microsoft.SqlServer.DacFx .NET-API

Das Entpacken eines DAC-Pakets unmittelbar nach dem Extrahieren aus einer Datenbank zum Anzeigen der Objektdefinitionen erfolgt effizienter mithilfe von Extract in SqlPackage mit der Eigenschaft /p:ExtractTarget=File. Das Ergebnis erstellt direkt eine einzelne .sql-Datei, die die Objektdefinitionen aus der angegebenen Quelldatenbank enthält.

Importieren von DACPAC in ein SQL-Projekt in Visual Studio

Das Importieren eines .DACPAC in ein SQL-Projekt in Visual Studio führt dazu, dass der Inhalt der .DACPAC in .sql Dateien transformiert und in Ordner organisiert wird. Nach dem Import sind Skripts nach der Bereitstellung und Skripts vor der Bereitstellung aus dem .DACPAC im Projektmappen-Explorer sichtbar.

  1. Installieren Sie SQL Server Data Tools als Teil von Visual Studio, und erstellen Sie ein neues SQL-Projekt.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das leere Projekt und wählen Sie Import, dann aus einem Datenschichtanwendungs-Paket.

Dekomprimieren der DACPAC-Datei zum Anzeigen von XML-Inhalten

Durch das Dekomprimieren der .DACPAC-Datei wird der XML-Inhalt für die Anzeige in einem Text-Editor angezeigt. Wenn Sie nach einer bestimmten Komponente innerhalb von .DACPAC suchen, kann dies eine schnelle Methode für den Zugriff auf die Inhalte sein.

  1. Ändern Sie die Dateierweiterung für die DACPAC-Datei in .zip.

  2. Entpacken Sie die .zip Datei mithilfe des von Ihrem Betriebssystem bereitgestellten Hilfsprogramms. So entzippen Sie eine Datei über die Befehlszeile:

    unzip AdventureWorks.dacpac
    
  3. Der resultierende Inhalt enthält DacMetadata.xml, Origin.xml und model.xml.

Bereitstellen von .DACPAC auf einer Testinstanz

Wenn Sie die DACPAC-Datei in einer Testinstanz bereitstellen, werden die Inhalte der DACPAC-Datei in einer Datenbank veröffentlicht, in der die Objekte aus verschiedenen verbundenen Datenbank-Tools durchsucht werden können.

Hinweis

Eine Option zum lokalen Erstellen einer Testinstanz ist mit SQL Server in Docker.

Bereitstellen von .DACPAC mit Azure Data Studio

  1. Installieren der DACPAC-Erweiterung für SQL Server für Azure Data Studio.

  2. Verbinden an die gewünschte Instanz. Klicken Sie mit der rechten Maustaste auf den Serverknoten, und wählen Sie im Menü den Assistenten für Datenschichtanwendung aus.

  3. Wählen Sie die Option Bereitstellen aus dem Assistenten aus, und legen Sie die Option Zieldatenbank auf Neue Datenbank fest.

  4. Navigieren Sie nach der Bereitstellung im Objekt-Explorer zur Datenbank auf dem verbundenen Server, um die Datenbankobjekte zu durchsuchen.

Bereitstellen von .DACPAC mithilfe von SqlPackage

  1. Installieren von SqlPackage.

  2. Verwenden Sie die SQLPackage-CLI, um die DACPAC-Datei in der gewünschten Instanz zu veröffentlichen. Beispielbefehle zum Veröffentlichen einer DACPAC-Datei in einer Datenbank finden Sie in den Beispielen von SqlPackage- Veröffentlichungen.

Zusätzliche Tools mit .DACPAC-Bereitstellungsfunktionen

Über Azure Data Studio und SqlPackage hinaus können viele andere Tools verwendet werden, um eine DACPAC-Datei in einer Datenbank bereitzustellen. Beispiele hierfür sind:

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

Rufen Sie die Unpack()-Methode auf

Die Microsoft.SqlServer.DacFx .NET-API stellt eine Methode zum Entpacken eines DACPAC-Objekts in einen Ordner bereit, der zum programmgesteuerten Entpacken einer DACPAC-Datei in einen Ordner verwendet werden kann. Die folgende .NET-Beispielanwendung verwendet zwei Argumente, den Pfad zur DACPAC-Datei und den Pfad zum Ausgabeordner. Das Ergebnis ist der Inhalt der .DACPAC, die in 3 XML-Dateien entpackt wird, und eine einzelne .SQL Datei, die alle Datenbankobjekte enthält.

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);
            }
        }
    }
}

Weitere Informationen