Dela via


Packa upp en DACPAC-fil

Ett program på datanivå (DAC) är en fristående enhet i hela databasmodellen och är portabel i en artefakt som kallas för ett DAC-paket eller .dacpac. Det är en bra idé att granska innehållet i en .dacpac innan du distribuerar den i produktion och verifiera uppgraderingsåtgärderna innan du uppgraderar en befintlig DAC. Validering av .dacpac innehåll är särskilt viktigt när du distribuerar paket som inte har utvecklats i din organisation. I den här artikeln beskrivs flera sätt att packa upp databasmodellen från en .dacpac för Windows, macOS och Linux.

Varning

Vi rekommenderar att du inte distribuerar en .dacpac från okända eller ej betrodda källor. Sådana DAC:er kan innehålla skadlig kod som kan köra oavsiktlig kod eller orsaka fel genom att ändra schemat. Innan du använder en DAC från en okänd eller obetrodd källa distribuerar du den på en isolerad testinstans av databasmotorn, packar upp DAC och undersöker koden, till exempel lagrade procedurer eller annan användardefinierad kod.

Alternativ för att undersöka innehållet i en .dacpac är:

  • importera .dacpac till ett SQL-projekt i Visual Studio
  • använda kommandoradsverktyget SqlPackage för att extrahera .dacpac
  • dekomprimera filen för att visa XML-innehållet
  • att distribuera .dacpac till en testinstans

Att packa upp en .dacpac omedelbart efter att den extraherades från en databas för att visa objektdefinitionerna utförs mer effektivt med hjälp av Extrahera i SqlPackage med egenskapen /p:ExtractTarget=File. Resultatet skapar direkt en enda .sql fil som innehåller objektdefinitionerna från den angivna källdatabasen.

Importera DACPAC till ett SQL-projekt i Visual Studio

Om du importerar en .dacpac till ett SQL-projekt i Visual Studio omvandlas innehållet i .dacpac till .sql-filer och ordnas i mappar. Efter importen syns skript för efterdistribution och fördistribution från .dacpac i Solution Explorer.

  1. Installera SQL Server Data Tools som en del av Visual Studio och skapa ett nytt SQL-projekt.

  2. I Solution Explorer högerklicka på det tomma projektet och välj Importeraoch sedan från ett programpaket på datanivå.

Dekomprimera DACPAC för att visa XML-innehåll

Om du expanderar .dacpac-filen blir det råa XML-innehållet tillgängligt för visning i en textredigerare. När du letar efter en specifik komponent i .dacpackan det vara en snabb metod att granska XML-innehållet för att komma åt informationen.

  1. Ändra filnamnstillägget för filen .dacpac till .zip.

  2. Packa upp .zip-filen med hjälp av verktyget som tillhandahålls av operativsystemet. Så här packar du upp en fil från kommandoraden:

    unzip AdventureWorks.dacpac
    
  3. Det resulterande innehållet innehåller DacMetadata.xml, Origin.xmloch model.xml.

Distribuera DACPAC till en testinstans

Distribution av .dacpac till en testinstans resulterar i innehållet i .dacpac publiceras till en databas där objekten kan bläddras från olika anslutna databasverktyg.

Obs

Ett alternativ för att skapa en testinstans lokalt är med SQL Server i Docker.

Distribuera DACPAC med Azure Data Studio

  1. Installera SQL Server dacpac-tillägget i Azure Data Studio.

  2. Anslut till önskad instans. Högerklicka på servernoden och välj Datalagerapplikationsguiden från menyn.

  3. Välj alternativet distribuera i guiden och ange alternativet Måldatabas till ny databas.

  4. Efter distributionen navigerar du till databasen på den anslutna servern i objektutforskaren för att bläddra i databasobjekten.

Distribuera DACPAC med hjälp av SqlPackage

  1. Installera SqlPackage.

  2. Använd SqlPackage CLI för att publicera .dacpac-filen till önskad instans. Exempelkommandon för att publicera en .dacpac till en databas finns i SqlPackage Publish-exempel.

Andra verktyg med DACPAC-distributionsfunktioner

Utöver Azure Data Studio och SqlPackage kan många andra verktyg användas för att distribuera en .dacpac till en databas. Några exempel är:

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

Anropa metoden Unpack()

Api:et Microsoft.SqlServer.DacFx .NET tillhandahåller en metod för att packa upp en .dacpac till en mapp, som kan användas för att programmatiskt packa upp en .dacpac till en mapp enligt beskrivningen. I följande exempel tar .NET-programmet två argument, sökvägen till filen .dacpac och sökvägen till utdatamappen, och resultatet är innehållet i .dacpac konverterat till 3 XML-filer och en enda .sql fil som innehåller alla databasobjekt.

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