Udostępnij za pośrednictwem


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ń.

  1. Zainstaluj narzędzia SQL Server Data Tools w ramach programu Visual Studio i utwórz nowy projekt SQL.

  2. 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 .dacpacprzeglądanie zawartości XML może być szybką metodą uzyskiwania dostępu do informacji.

  1. Zmień rozszerzenie pliku w pliku .dacpac na .zip.

  2. Rozpakuj plik .zip przy użyciu narzędzia dostarczonego przez system operacyjny. Aby rozpakować plik za pomocą wiersza polecenia:

    unzip AdventureWorks.dacpac
    
  3. Wynikowa zawartość obejmuje DacMetadata.xml, Origin.xmli model.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

  1. Zainstaluj rozszerzenie programu dacpac SQL Server w Azure Data Studio.

  2. Połącz się z żądanym wystąpieniem. Kliknij prawym przyciskiem myszy węzeł serwera i wybierz Kreator aplikacji warstwy danych z menu.

  3. Wybierz opcję wdrażania z kreatora i ustaw opcję Docelowa baza danych na Nowa baza danych.

  4. 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

  1. Zainstaluj sqlPackage.

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