Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
Installera SQL Server Data Tools som en del av Visual Studio och skapa ett nytt SQL-projekt.
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 .dacpac
kan det vara en snabb metod att granska XML-innehållet för att komma åt informationen.
Ändra filnamnstillägget för filen
.dacpac
till.zip
.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
Det resulterande innehållet innehåller
DacMetadata.xml
,Origin.xml
ochmodel.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
Installera SQL Server dacpac-tillägget i Azure Data Studio.
Anslut till önskad instans. Högerklicka på servernoden och välj Datalagerapplikationsguiden från menyn.
Välj alternativet distribuera i guiden och ange alternativet Måldatabas till ny databas.
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
Installera SqlPackage.
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);
}
}
}
}