MSBuild から DB を更新する

SSDTSQL 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の記事 を参考にするといいと思います。