この日記はVisual Studio Advent Calendar 2015の12/8分の記事です。
Visual Studio Advent Calendar 2014 - Qiita
みなさんはデータベースの開発にどんなものを使われているでしょうか?本番機と検証機のスキーマやデータ比較どうしているでしょう?いちいちSQLを書いて比較したりしていませんか?
ストアドプロシージャの開発や、データの定義を行うのにSQL Server Management Studio(SSMS)もいいですが、どうせならVisual Studioに統合されたSQL Server Data Tools(SSDT)を使ってみましょう。SSMSと同様のIntellisenseとともにソース管理もサポートされるので、大変便利です。

新規プロジェクトからSQL Serverを選んでSQL Serverデータベースプロジェクトを選びます。ほかのプロジェクト同様、この時点でソース管理に追加することも可能です。

プロジェクトにはSQL Serverでサポートされている多くのテーブル、SQL CLR、サーバーオブジェクトを追加することができます。

プロジェクトのプロパティでターゲットのSQL Serverのバージョンを指定可能です。異なるバージョンのSQL Serverではスキーマの比較ができないので、気を付けてください。

テーブルの設計はGUI以外にも普通にテキストで編集可能です。Intellisenseももちろん対応しています。

インデックスもこのように右ペインから追加可能です。

作ったデータベースは右クリックからデータベースに発行可能です。LocalDB、SQL ServerいずれもOKです。

発行先はプロファイルに名前を付けて保存することにより、複数の発行先を使い分けることが可能です。

データベースもいつものインターフェースで指定します。

データベース発行時の注意点として、発行時にデータが消失するような更新は抑止されています。もしも問題ない場合、「データ損失が発生する場合に増分配置をブロック」のチェックを外してください。

データベース発行後、以前のデータベースの後処理をする場合、「配置後スクリプト」を使用します。

普通のSQLの他、既存のSQLをインポートすることも可能です。差分処理に使ってください。
データベース開発をしている場合の一番厄介な点はスキーマの差分がわかりづらいこと。SSDTはそういうためにデータやスキーマの差分を調べる機能があります。

対象データベースを選択して、比較情報を設定します。

ソース(開発用)とターゲット(本番)を指定します。

比較対象を選択します。今回はテーブルのみです。

すると追加したレコードが表示されます。

こんな風にレコードの中もわかります。「ターゲットの更新」をクリックすると、データの同期が行われます。スキーマの比較も可能です。

こんな風にスキーマに変更を追加しました。

データの比較同様に、スキーマの比較を選択します。

こんな風に比較するスキーマの差分がわかります。スキーマ比較の場合、SQL Serverのバージョンが一致していないとエラーが出るようです。発行前にデータベースプロェクトの設定を忘れずに。
Visual Studio と程よく統合されていて、便利なので、ぜひ使ってください。今回は描きませんでしたが、Visual Studio と統合されているため、ソース管理も便利です。