MSBuild から DB を更新する
SSDT(SQL Server Data Tools)を使うと、DBプロジェクトで管理しているオブジェクトと、サーバ側のオブジェクトとを比較して、差分のみを適用することができます。
これはこれで便利なのですが、手動で毎度ポチポチ操作して更新するのが面倒なので、自動化を考えてみました。
基本的には、"スキーマ比較"→"対象のDB選択"→"比較"→"更新"の順に操作しているだけなので、これをMSBuildのタスクとして登録します。
<Target Name="myDeploy"> <SqlSchemaCompareTask source="$(OutputPath)\$(ProjectName).dacpac" target="(接続文字列)" Deploy="true" /> </Target>
プロパティ | 値 |
---|---|
source | 比較元 |
target | 比較先 |
Deploy | targetにデプロイするかどうか |
最小構成だとこんな感じでしょうか?これをプロジェクトファイル(.sqlproj)に追記して、コマンドからこんな感じでmsbuildを実行するとデプロイされます。
msbuild /t:Build;myDeploy
より詳しい情報は、MSDN Blogの記事 を参考にするといいと思います。