Condividi tramite


Decomprimere un file DACPAC

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. È consigliabile esaminare il contenuto di un .dacpac prima di distribuirlo nell'ambiente di produzione e convalidare le azioni di aggiornamento prima di aggiornare un'applicazione livello dati esistente. La convalida del contenuto .dacpac è particolarmente importante quando si distribuiscono pacchetti non sviluppati nell'organizzazione. Questo articolo descrive diversi modi per decomprimere il modello di database da un .dacpac per Windows, macOS e Linux.

Avvertimento

È consigliabile non distribuire un .dacpac da origini sconosciute o non attendibili. Tali DAC possono contenere codice dannoso che potrebbe eseguire codice imprevisto o causare errori modificando lo schema. Prima di utilizzare un componente di applicazione dati (DAC) da un'origine sconosciuta o non attendibile, distribuiscilo in un'istanza di test isolata del motore di database. Dopo aver scompattato il DAC, esamina il codice, incluse le stored procedure o altro codice definito dall'utente.

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

  • importazione del .dacpac in un progetto SQL in Visual Studio
  • uso dell'utilità della riga di comando SqlPackage per estrarre il .dacpac
  • decompressione del file per visualizzare il contenuto XML
  • distribuzione del .dacpac in un'istanza di test

La decompressione di un .dacpac immediatamente dopo l'estrazione da un database per visualizzare le definizioni degli oggetti viene eseguita in modo più efficiente utilizzando Extract su SqlPackage con la proprietà /p:ExtractTarget=File. Il risultato crea direttamente un singolo file .sql che contiene le definizioni di oggetto dal database di origine specificato.

Importare il file DACPAC in un progetto SQL in Visual Studio

L'importazione di un .dacpac in un progetto SQL in Visual Studio comporta la trasformazione dei .dacpac in file .sql e organizzati in cartelle. Dopo l'importazione, gli script di post-distribuzione e gli script di pre-distribuzione del .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 e selezionare Importa, quindi da un pacchetto dell'applicazione di livello dati.

Decomprimere il file DACPAC per visualizzare il contenuto XML

La decompressione del file .dacpac comporta la disponibilità del contenuto XML non elaborato per la visualizzazione in un editor di testo. Quando si cerca un componente specifico all'interno del .dacpac, la revisione del contenuto XML può essere un metodo rapido per accedere alle informazioni.

  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.xmle model.xml.

Distribuire il DACPAC in un'istanza di test

La distribuzione dell'.dacpac in un'istanza di test comporta la pubblicazione del .dacpac 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 DACPAC usando Azure Data Studio

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

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

  3. Seleziona l'opzione di distribuzione dalla procedura guidata e imposta 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 DACPAC usando SqlPackage

  1. Installare SqlPackage .

  2. Usare l'interfaccia della riga di comando di SqlPackage per pubblicare il file .dacpac nell'istanza desiderata. Ad esempio, per i comandi per pubblicare un .dacpac in un database, consultare gli esempi di pubblicazione di SqlPackage .

Altri strumenti con funzionalità di distribuzione DACPAC

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

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

Richiamare il metodo Unpack()

L'API Microsoft.SqlServer.DacFx .NET fornisce un metodo per decomprimere un .dacpac a una cartella, che può essere usata per decomprimere a livello di codice un .dacpac in una cartella come illustrato. L'applicazione .NET di esempio seguente accetta due argomenti, il percorso del file .dacpac e il percorso della cartella di output e il risultato è il contenuto del .dacpac convertito in 3 file XML e un singolo file .sql che contiene 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);
            }
        }
    }
}