前回の続きです。
Microsoft.SqlServer.DACFx でdacpacをデータベースにデプロイする
続いて、出来上がったdacpacファイルから Microsoft.SqlServer.DACFx を使ってデータベースにデプロイしてみる。
上記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