Поделиться через


Распаковка ФАЙЛА DACPAC

Приложение уровня данных (DAC) — это автономная единица всей модели базы данных и переносимая в артефакт, известный как пакет DAC или .dacpac. Рекомендуется просмотреть содержимое .dacpac перед развертыванием в рабочей среде и проверить действия обновления перед модернизацией существующего приложения уровня данных (DAC). Проверка содержимого .dacpac особенно важна при развертывании пакетов, которые не были разработаны в вашей организации. В этой статье описано несколько способов распаковки модели базы данных из .dacpac для Windows, macOS и Linux.

Предупреждение

Настоятельно рекомендуется не развертывать .dacpac из неопознанных или ненадежных источников. Такие daCs могут содержать вредоносный код, который может выполнить непреднамеренный код или вызвать ошибки, изменив схему. Прежде чем использовать DAC из неизвестного или ненадежного источника, разверните его в изолированном тестовом экземпляре ядра СУБД, распакуйте DAC и изучите код, например хранимые процедуры или другой определяемый пользователем код.

Варианты проверки содержимого .dacpac включают:

  • импорт .dacpac в проект SQL в Visual Studio
  • использование утилиты командной строки SqlPackage для извлечения .dacpac
  • распаковка файла для просмотра содержимого XML
  • развертывание .dacpac в тестовом окружении

Распаковка .dacpac непосредственно после извлечения из базы данных для более эффективного просмотра определений объектов осуществляется с помощью Extract в SqlPackage со свойством /p:ExtractTarget=File. Результат непосредственно создает один файл .sql, содержащий определения объектов из указанной исходной базы данных.

Импорт DACPAC в проект SQL в Visual Studio

Импорт .dacpac в проект SQL в Visual Studio приводит к преобразованию .dacpac в файлы .sql и их упорядочению в папки. После импорта скрипты после развертывания и скрипты предварительного развертывания из .dacpac отображаются в обозревателе решений.

  1. Установите sql Server Data Tools в составе Visual Studio и создайте новый проект SQL.

  2. В обозревателе решений щелкните правой кнопкой мыши пустой проект и выберите импортировать, а затем из пакета приложений уровня данных.

Распакуйте DACPAC, чтобы просмотреть содержимое XML

Распаковка файла .dacpac приводит к тому, что необработанное XML-содержимое доступно для просмотра в текстовом редакторе. При поиске определенного компонента в .dacpacпроверка содержимого XML может быть быстрым методом для доступа к информации.

  1. Измените расширение файла .dacpac на .zip.

  2. Распакуйте файл .zip с помощью служебной программы, предоставленной операционной системой. Чтобы распакуировать файл из командной строки, выполните следующие действия.

    unzip AdventureWorks.dacpac
    
  3. Полученное содержимое включает DacMetadata.xml, Origin.xmlи model.xml.

Развертывание DACPAC в тестовом экземпляре

Развертывание .dacpac в тестовом экземпляре приводит к тому, что содержимое .dacpac публикуется в базе данных, где объекты можно просматривать из различных подключенных средств базы данных.

Заметка

Одним из вариантов локального создания тестового экземпляра является SQL Server в Docker.

Развертывание DACPAC с помощью Azure Data Studio

  1. Установите расширение SQL Server dacpac в Azure Data Studio.

  2. Подключитесь к нужному экземпляру. Щелкните правой кнопкой мыши узел сервера и выберите мастер приложений уровня данных в меню.

  3. Выберите в мастере параметр развертывания и установите параметр целевой базы данных на создать базу данных.

  4. После развертывания перейдите к базе данных на подключенном сервере в обозревателе объектов, чтобы просмотреть объекты базы данных.

Развертывание DACPAC с помощью SqlPackage

  1. Установите SqlPackage.

  2. Используйте интерфейс командной строки SqlPackage для публикации файла .dacpac в нужный экземпляр. Примеры команд для публикации .dacpac в базе данных можно найти в примерах публикации SqlPackage .

Другие средства с возможностями развертывания DACPAC

Помимо Azure Data Studio и SqlPackage, многие другие средства можно использовать для развертывания .dacpac в базе данных. Ниже приведены некоторые примеры:

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

Вызов метода Unpack()

API Microsoft.SqlServer.DacFx .NET предоставляет метод для распаковки.dacpac в папку, который можно использовать для программной распаковки .dacpac в папку, как показано. В следующем примере приложение .NET принимает два аргумента, путь к файлу .dacpac и путь к выходной папке, а результатом является содержимое .dacpac преобразовано в 3 XML-файла и один файл .sql, содержащий все объекты базы данных.

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