データ層アプリケーション (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
からのデプロイ後スクリプトとデプロイ前スクリプトがソリューション エクスプローラーに表示されます。
Visual Studio の一部として SQL Server Data Tools をインストールし、新しい SQL プロジェクトを作成します。
ソリューション エクスプローラーで、空のプロジェクトを右クリックし、[インポート] を選択し、データ層アプリケーション パッケージから選択します。
DACPAC を展開して XML コンテンツを表示する
.dacpac
ファイルを展開すると、生の XML コンテンツがテキスト エディターで表示できるようになります。
.dacpac
内で特定のコンポーネントを検索する場合、XML コンテンツを確認すると、情報に簡単にアクセスできます。
.dacpac
ファイルのファイル拡張子を.zip
に変更します。OS によって提供されるユーティリティを使用して、.zip ファイルを解凍します。 コマンド ラインからファイルを解凍するには:
unzip AdventureWorks.dacpac
結果の内容には、
DacMetadata.xml
、Origin.xml
、およびmodel.xml
が含まれます。
DACPAC をテスト インスタンスにデプロイする
.dacpac
をテスト インスタンスにデプロイすると、.dacpac
の内容がデータベースにパブリッシュされ、そこでさまざまな接続されたデータベース ツールからオブジェクトを参照できるようになります。
注
テスト インスタンスをローカルで作成するオプションの 1 つは、 Docker の SQL Server を使用することです。
Azure Data Studio を使用して DACPAC をデプロイする
Azure Data Studio に SQL Server dacpac 拡張機能をインストールします。
目的のインスタンスに接続します。 サーバー ノードを右クリックし、メニューから [データ層アプリケーション ウィザード ] を選択します。
ウィザードから デプロイ オプションを選択し、[ ターゲット データベース ] オプションを [新しいデータベース] に設定します。
デプロイ後、オブジェクト エクスプローラーで接続されているサーバー上のデータベースに移動し、データベース オブジェクトを参照します。
SqlPackage を使用して DACPAC をデプロイする
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);
}
}
}
}