DAC パッケージのアンパック

DAC は、データベース モデル全体の自己完結型ユニットであり、DAC パッケージ (.dacpac)と呼ばれるアーティファクトに移植可能です。 この記事では、Windows、macOS、Linux 用の .dacpac からデータベース モデルをアンパックするいくつかの方法について説明します。

警告

ソースが不明または信頼されていない DAC パッケージは配置しないことをお勧めします。 こうした DAC には、意図しない コードを実行したり、スキーマを変更してエラーを発生させるような、悪意のあるコードが含まれている可能性があります。 DAC のソースが不明または信頼されていない場合は、使用する前に、データベース エンジンの隔離されたテスト インスタンスに DAC をデプロイし、DAC をアンパックして、ストアド プロシージャやその他のユーザー定義コードなどのコードを確認してください。

dacpac の内容を調べるオプションは次のとおりです。

  • Visual Studio で .dacpac を SQL プロジェクトにインポートする
  • ファイルを展開して XML コンテンツを表示する
  • .dacpac をテスト インスタンスにデプロイする
  • Unpack() Microsoft.SqlServer.DacFx .NET API からメソッドを呼び出す

Visual Studio で .dacpac を SQL プロジェクトにインポートする

Visual Studio で .dacpac を SQL プロジェクトにインポートすると、.dacpac の内容が .sql ファイルに変換され、フォルダーに編成されます。 インポート後、.dacpac からの配置後スクリプトと配置前スクリプトがソリューション エクスプローラーに表示されます。

  1. Visual Studio の一部として SQL Server Data Tools をインストールし、新しい SQL プロジェクトを作成します。

  2. ソリューション エクスプローラーで空のプロジェクトを右クリックし、コンテキスト メニューの [インポート] を選択し、[データ層アプリケーション] からインポートを選択します。

.dacpac を展開して XML コンテンツを表示する

.dacpac ファイルを展開すると、生の XML コンテンツがテキスト エディターで表示できるようになります。 .dacpac 内の特定のコンポーネントを探す場合、これはコンテンツにアクセスするための簡単な方法です。

  1. .dacpac ファイルのファイル拡張子を .zip に変更します。

  2. OS によって提供されるユーティリティを使用して、.zip ファイルを解凍します。 コマンド ラインからファイルを解凍するには:

    unzip AdventureWorks.dacpac
    
  3. 結果の内容には DacMetadata.xmlOrigin.xml、および model.xml が含まれます。

.dacpac をテスト インスタンスにデプロイする

.dacpac をテスト インスタンスにデプロイすると、.dacpac の内容がデータベースに発行され、接続されているさまざまなデータベース ツールからオブジェクトを参照できるようになります。

注意

テスト インスタンスをローカルで作成するオプションの 1 つは、Docker の SQL Server を使用 することです。

Azure Data Studio を使用して .dacpac をデプロイする

  1. SQL Server dacpac の拡張機能Azure Data Studio にインストールする。

  2. 目的のインスタンスに接続します。 サーバー ノードを右クリックし、メニューから [データ層アプリケーション ウィザード] を選択します。

  3. ウィザードからデプロイ オプションを選択し、[ターゲット データベース] オプションを [新しいデータベース] に設定します。

  4. デプロイ後、オブジェクト エクスプローラーで接続されているサーバー上のデータベースに移動し、データベース オブジェクトを参照します。

SqlPackage を使用して .dacpac をデプロイする

  1. SqlPackage をインストールする。

  2. SqlPackage CLI を使用して、.dacpac ファイルを目的のインスタンスに発行します。 .dacpac をデータベースに発行するコマンドの例については、SqlPackage の発行の例 を参照してください。

.dacpac デプロイ機能を備えたその他のツール

Azure Data Studio や SqlPackage 以外にも、.dacpac をデータベースにデプロイするために他の多くのツールを使用できます。 次に、それらの例の一部を示します。

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

Unpack() メソッドを呼び出します

Microsoft.SqlServer.DacFx .NET API には、.dacpac をフォルダーに アンパックするメソッド が用意されています。これを使用して、.dacpac をプログラムでフォルダーにアンパックできます。 次の例の .NET アプリケーションでは、.dacpac ファイルへのパスと出力フォルダーへのパスという 2 つの引数を受け取ります。結果は、3 つの XML ファイルにアンパックされる .dacpac の内容と、すべてのデータベース オブジェクトを含む単一の .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);
            }
        }
    }
}

参照