Decompressione di un pacchetto di applicazione livello dati

Un'applicazione livello dati è un'unità autonoma dell'intero modello di database ed è portabile in un artefatto noto come pacchetto di applicazione livello dati o .dacpac. Questo articolo descrive diversi modi per decomprimere il modello di database da un file con estensione .dacpac per Windows, macOS e Linux.

Avviso

È consigliabile evitare di distribuire un pacchetto di applicazione livello dati proveniente da origini sconosciute o non attendibili. Tali pacchetti DAC possono contenere codice dannoso che potrebbe eseguire codice indesiderato o causare errori modificando lo schema. Prima di utilizzare un pacchetto di applicazione livello dati proveniente da un'origine sconosciuta o non attendibile, distribuirlo in un'istanza di prova isolata del motore di database, decomprimere il pacchetto di applicazione livello dati ed esaminare il codice, ad esempio stored procedure o altro codice definito dall'utente.

Le opzioni per esaminare il contenuto di un file dacpac includono:

  • Importazione del file .dacpac in un progetto SQL in Visual Studio
  • Decompressione del file per visualizzare il contenuto XML
  • Distribuzione del file .dacpac in un'istanza di test
  • Chiamata del metodo Unpack() dall'API .NET Microsoft.SqlServer.DacFx

Importare il file .dacpac in un progetto SQL in Visual Studio

L'importazione di un file .dacpac in un progetto SQL in Visual Studio comporta la trasformazione del contenuto del file .dacpac in file .sql e l'organizzazione in cartelle. Dopo l'importazione, gli script post-distribuzione e gli script pre-distribuzione dal file .dacpac sono visibili in Esplora soluzioni.

  1. Installare SQL Server Data Tools come parte di Visual Studio e creare un nuovo progetto SQL.

  2. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto vuoto, selezionare Importa e quindi da un pacchetto di applicazione livello dati.

Decomprimere il file .dacpac per visualizzare il contenuto XML

La decompressione del file .dacpac rende il contenuto XML non elaborato disponibile per la visualizzazione in un editor di testo. Quando si cerca un componente specifico all'interno del file .dacpac, questo può essere un metodo rapido per accedere al contenuto.

  1. Modificare l'estensione del file .dacpac in .zip.

  2. Decomprimere il file .zip usando l'utilità fornita dal sistema operativo. Per decomprimere un file dalla riga di comando:

    unzip AdventureWorks.dacpac
    
  3. Il contenuto risultante include DacMetadata.xml, Origin.xml e model.xml.

Distribuire il file .dacpac in un'istanza di test

La distribuzione del file .dacpac in un'istanza di test comporta la pubblicazione del suo contenuto in un database in cui è possibile esplorare gli oggetti da vari strumenti di database connessi.

Nota

Un'opzione per la creazione di un'istanza di test in locale è con SQL Server in Docker.

Distribuire il file .dacpac con Azure Data Studio

  1. Installare l'estensione SQL Server dacpac in Azure Data Studio.

  2. Stabilire la connessione all'istanza desiderata. Fare clic con il pulsante destro del mouse sul nodo server e selezionare Procedura guidata applicazione livello dati dal menu.

  3. Selezionare l'opzione di distribuzione dalla procedura guidata e impostare l'opzione Database di destinazione su Nuovo database.

  4. Dopo la distribuzione passare al database nel server connesso in Esplora oggetti per esplorare gli oggetti di database.

Distribuire il file .dacpac usando SqlPackage

  1. Installare SqlPackage.

  2. Usare l'interfaccia della riga di comando SqlPackage per pubblicare il file .dacpac nell'istanza desiderata. Per consultare comandi di esempio per la pubblicazione di un file .dacpac in un database, vedere Esempi di Publish di SqlPackage.

Strumenti aggiuntivi con funzionalità di distribuzione di file .dacpac

Oltre ad Azure Data Studio e SqlPackage, è possibile usare molti altri strumenti per distribuire un file .dacpac in un database. Alcuni esempi includono:

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

Richiamare il metodo Unpack()

L'API .NET Microsoft.SqlServer.DacFx fornisce un metodo per decomprimere un file .dacpac in una cartella, che può essere usata per decomprimere a livello di codice un file .dacpac in una cartella come illustrato. L'applicazione .NET di esempio qui di seguito accetta due argomenti, il percorso del file .dacpac e il percorso della cartella di output, e il risultato è il contenuto del file .dacpac decompresso in 3 file XML e un singolo file .sql contenente tutti gli oggetti di database.

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

Vedi anche