Rozpakowywanie pliku DACPAC
Aplikacja warstwy danych (DAC) jest samodzielną jednostką całego modelu bazy danych i jest przenośna w artefakt znany jako pakiet DAC lub .dacpac
. Dobrą praktyką jest przejrzenie zawartości .dacpac
przed wdrożeniem go w środowisku produkcyjnym oraz zweryfikowanie akcji uaktualniania przed uaktualnieniem istniejącego DAC. Walidacja zawartości .dacpac
jest szczególnie ważna podczas wdrażania pakietów, które nie zostały opracowane w organizacji. W tym artykule opisano kilka sposobów rozpakowywania modelu bazy danych z .dacpac
dla systemów Windows, macOS i Linux.
Ostrzeżenie
Zalecamy, aby nie wdrażać .dacpac
z nieznanych lub niezaufanych źródeł. Takie kontrolery DAC mogą zawierać złośliwy kod, który może wykonywać niezamierzony kod lub powodować błędy przez zmodyfikowanie schematu. Przed użyciem DAC z nieznanego lub niezaufanego źródła wdróż ją na izolowanym wystąpieniu testowym Silnika bazy danych, rozpakuj DAC i zbadaj kod, taki jak procedury przechowywane lub inny kod zdefiniowany przez użytkownika.
Opcje przeglądania zawartości .dacpac
obejmują:
- importowanie
.dacpac
do projektu SQL w programie Visual Studio - Korzystanie z narzędzia wiersza poleceń SqlPackage do wyodrębniania
.dacpac
- dekompresowanie pliku w celu wyświetlenia zawartości XML
- wdrażanie
.dacpac
w wystąpieniu testowym
Rozpakowywanie .dacpac
natychmiast po wyodrębnieniu z bazy danych, aby zobaczyć definicje obiektów, jest bardziej efektywne przy użyciu polecenia Extract w SqlPackage z właściwością /p:ExtractTarget=File
. Wynik tworzy bezpośrednio pojedynczy plik .sql
zawierający definicje obiektów z określonej źródłowej bazy danych.
Importowanie pakietu DACPAC do projektu SQL w programie Visual Studio
Importowanie .dacpac
do projektu SQL w programie Visual Studio powoduje przekształcenie zawartości .dacpac
w pliki .sql i zorganizowane w foldery. Po wykonaniu importu, skrypty post-deployment i pre-deployment z .dacpac
są widoczne w Eksploratorze rozwiązań.
Zainstaluj narzędzia SQL Server Data Tools w ramach programu Visual Studio i utwórz nowy projekt SQL.
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy pusty projekt i wybierz opcję Importuj, a następnie z pakietu aplikacji warstwy danych.
Dekompresuj pakiet DACPAC, aby wyświetlić zawartość XML
Dekompresowanie pliku .dacpac
powoduje udostępnienie nieprzetworzonej zawartości XML do wyświetlania w edytorze tekstów. Podczas wyszukiwania określonego składnika w .dacpac
przeglądanie zawartości XML może być szybką metodą uzyskiwania dostępu do informacji.
Zmień rozszerzenie pliku w pliku
.dacpac
na.zip
.Rozpakuj plik .zip przy użyciu narzędzia dostarczonego przez system operacyjny. Aby rozpakować plik za pomocą wiersza polecenia:
unzip AdventureWorks.dacpac
Wynikowa zawartość obejmuje
DacMetadata.xml
,Origin.xml
imodel.xml
.
Wdrażanie pakietu DACPAC w wystąpieniu testowym
Wdrożenie .dacpac
w wystąpieniu testowym powoduje opublikowanie zawartości .dacpac
w bazie danych, w której można przeglądać obiekty z różnych połączonych narzędzi bazy danych.
Notatka
Jedną z opcji tworzenia wystąpienia testowego lokalnie jest użycie programu SQL Server w usłudze Docker.
Wdrażanie pakietu DACPAC przy użyciu narzędzia Azure Data Studio
Zainstaluj rozszerzenie programu dacpac SQL Server w Azure Data Studio.
Połącz się z żądanym wystąpieniem. Kliknij prawym przyciskiem myszy węzeł serwera i wybierz Kreator aplikacji warstwy danych z menu.
Wybierz opcję wdrażania z kreatora i ustaw opcję Docelowa baza danych na Nowa baza danych.
Po wdrożeniu przejdź do bazy danych na połączonym serwerze w Eksploratorze obiektów, aby przeglądać obiekty bazy danych.
Wdrażanie pakietu DACPAC przy użyciu pakietu SqlPackage
Zainstaluj sqlPackage.
Użyj CLI SqlPackage, aby opublikować plik
.dacpac
w żądanym wystąpieniu. Aby uzyskać przykładowe polecenia do opublikowania.dacpac
w bazie danych, zobacz przykłady publikowania przy użyciu SqlPackage .
Inne narzędzia z możliwościami wdrażania pakietu DACPAC
Poza narzędziami Azure Data Studio i SqlPackage wiele innych narzędzi może służyć do wdrażania .dacpac
w bazie danych. Oto kilka przykładów:
- SQL Server Management Studio
- Visual Studio: SQL Server Data Tools
Wywoływanie metody Unpack()
Interfejs API .NET Microsoft.SqlServer.DacFx udostępnia metodę do rozpakowywania.dacpac
do folderu, co umożliwia programowe rozpakowywanie .dacpac
do folderu, jak to widać. Następująca przykładowa aplikacja .NET przyjmuje dwa argumenty, ścieżkę do pliku .dacpac
i ścieżkę do folderu wyjściowego, a wynikiem jest zawartość .dacpac
przekonwertowana na 3 pliki XML i pojedynczy plik .sql zawierający wszystkie obiekty bazy danych.
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);
}
}
}
}