次の方法で共有


DACPAC ファイルを開梱する

データ層アプリケーション (DAC) は、データベース モデル全体の自己完結型ユニットであり、DAC パッケージまたは .dacpacと呼ばれる成果物に移植可能です。 運用環境に展開する前に .dacpac の内容を確認し、既存の DAC をアップグレードする前にアップグレード アクションを検証することをお勧めします。 .dacpacコンテンツの検証は、組織内で開発されていないパッケージを展開する場合に特に重要です。 この記事では、Windows、macOS、Linux 用の .dacpac からデータベース モデルをアンパックするいくつかの方法について説明します。

警告

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

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

  • Visual Studio で SQL プロジェクトに .dacpac をインポートする
  • SqlPackage コマンド ライン ユーティリティを使用して、.dacpac を抽出する
  • ファイルを展開して XML コンテンツを表示する
  • .dacpacをテスト インスタンスにデプロイする

.dacpacをデータベースから抽出した直後にアンパックしてオブジェクト定義を表示する方が、プロパティ /p:ExtractTarget=Fileで SqlPackage で Extract を使用すると、より効率的に実行できます。 その結果、指定したソース データベースのオブジェクト定義を含む 1 つの .sql ファイルが直接作成されます。

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

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

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

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

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

.dacpac ファイルを展開すると、生の XML コンテンツがテキスト エディターで表示できるようになります。 .dacpac内で特定のコンポーネントを検索する場合、XML コンテンツを確認すると、情報に簡単にアクセスできます。

  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. Azure Data StudioSQL Server dacpac 拡張機能をインストールします。

  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 データ ツール

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

Microsoft.SqlServer.DacFx .NET API には、.dacpacをフォルダーにアンパックするためのメソッドが用意されています。このメソッドを使用すると、.dacpacをプログラムでフォルダーにアンパックすることができます。 次の .NET アプリケーションの例では、2 つの引数 ( .dacpac ファイルへのパスと出力フォルダーへのパス) を受け取ります。結果は、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);
            }
        }
    }
}