きよくらの備忘録

「三日坊主と呼ばせない!日記」改め。主にソフトウェア開発関連の話題。

CLIツールを使わずにコード中からプロジェクトをビルドしたりdacpacをデプロイしたりする(その2)

前回の続きです。

Microsoft.SqlServer.DACFx でdacpacをデータベースにデプロイする

続いて、出来上がったdacpacファイルから Microsoft.SqlServer.DACFx を使ってデータベースにデプロイしてみる。

www.nuget.org

上記NuGetッケージを取り込んだ上で、以下のコードでごくシンプルに実現できた。

var connectionString = "<デプロイ先データベースに接続するための接続文字列>";
var databaseName = "<デプロイ先のデータベース名>";

var dac = new DacServices(connectionString);
var dacpac = DacPackage.Load(@"C:\hoge\output.dacpac");
dac.Deploy(dacpac, databaseName , true);

まとめ

以下、前回のエントリも含めてまとめる。

  • CLIツールを使用せず、NuGetで提供されているパッケージを利用することで.NETのコードだけでプロジェクトdacpacの生成とデプロイが可能
  • 今回参照したパッケージは以下
  • Microsoft.Build.Evaluation.ProjectクラスBuildメソッドによるプロジェクトのビルドについてのメモ:
    • ビルド成否はboolで返る
    • ビルドログは引数として渡したロガー経由で取得する必要がある
    • SetPropertyメソッドでプロパティをコード中から設定することが可能
    • sqlproj をビルドしてdacpacを生成する場合は Microsoft.SqlServer.DacFx の参照が必要
  • Microsoft.SqlServer.Dac.DacServicesクラスDeployメソッドによるdacpacのデプロイについてのメモ:
    • DacPackageクラスのLoadメソッド でdacpacをロードし、Deployの引数に設定してデプロイする

サンプルコード

今回検証したサンプルコードを以下に公開した github.com