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 einen DAC aus einer unbekannten oder nicht vertrauenswürdigen Quelle verwenden, stellen Sie ihn in einer isolierten Testinstanz des Datenbankmoduls bereit, entpacken Sie den DAC, und untersuchen Sie den Code, z. B. gespeicherte Prozeduren oder anderen benutzerdefinierten Code.

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

  • Importieren von 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

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 dann "Importieren" aus einem Datenebenenanwendungspaket aus.

Dekomprimieren der dacpac-Datei zum Anzeigen von XML-Inhalten

Durch das Dekomprimieren der dacpac-Datei wird der XML-Rohinhalt 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. Entzippen Sie die ZIP-Datei mithilfe des Dienstprogramms, das von Ihrem Betriebssystem bereitgestellt wird. So entzippen Sie eine Datei über die Befehlszeile:

    unzip AdventureWorks.dacpac
    
  3. Der resultierende Inhalt enthält DacMetadata.xml, , Origin.xmlund 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 Datenbanktools 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 Sie die SQL Server dacpac-Erweiterung in Azure Data Studio.

  2. Stellen Sie eine Verbindung mit der gewünschten Instanz her. Klicken Sie mit der rechten Maustaste auf den Serverknoten, und wählen Sie im Menü den Assistenten für Anwendungen auf Datenebene 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 Sie 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 zum Veröffentlichen 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-Datentools
  • [PowerShell

Aufrufen der Unpack() Methode

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, und 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