同期用のSQL

これまで見てきたように、2つのDB間ではTable2とTable3に相違がありました。それでは、これらを同期してみましょう。同期するためのSQLは「Synchronized Script」タブに表示されます。

「Synchronized Script」タブにアップグレードSQLが表示される

Table2のカラムの変更するALTER TABLE文とTable3を作成するCREATE TABLE文が表示されていることが確認できます。 右の「Save As」ボタンを押せば、このSQLをファイルで保存できます。「Copy Clipboard」ボタンを押せば、このSQLをクリップボードにコピーされます。

SQLの実行

Open DBDiffではSQLを実行する機能はありません。そのため、SQL Server Management Studioのようなツールを使用してSQLを実行します。

SQL Server Management StudioにてSQLを実行

SQLを実行した後で、再びOpen DBDiffの「Compare」ボタンをクリックします。この場合では、再び「Synchronized Script」タブにTable_2を変更するSQLが表示されています。

再び「Compare」ボタンをクリック

これは、最新スキーマでは、Id、Address、FirstName、LastNameの順にカラムが並んでいることに対して、反映先スキーマでは、Id、FirstName、LastName、Addressの順にカラムが並んでいるためです。この相違を反映させるために、TempTable_2という一時テーブルを使って、カラム順の変更とデータを移行しています。 このSQLをSQL Server Management Studioで実行した後で、再び「Compare」ボタンをクリックしてみます。

「Compare」ボタンでSQLが生成されないことを確認(同期完了)

今度は、上図のように「Synchronized Script」タブが空っぽになりました。これで2つのデータベース間で同期がとれていることが確認できました。 このようにOpen DBDiffを使って、簡単にDBをアップグレードできることがわかりました。

オプションの設定

Open DBDiffには「Option」ボタンが用意されています。このボタンをクリックすると、比較時の動作設定を行うことができます。

型フィルタの設定

「Filer by Type」タブでは、比較するオブジェクトの種類を設定できます。チェックボックスを外すことで、特定のオブジェクトを比較対象から除外することができます。

デフォルト値の設定

「Defaults」タブでは、NULLでない列に設定する値を指定できます。例えば数値型では0を、日付型ではシステム日付を指定していることがわかります。

まとめ

Visual Studioの上位エディションにはDBを同期する便利な機能が備わっていますが、費用の都合で利用できないこともあるかと思います。そのような時には、このOpen DBDiffが活用できるでしょう。Open DBDiffは、ソースコードが公開されている上、SMOのような外部コンポーネントに依存していないため独自の拡張にも適しています。 Open DBDiffは定期的にバージョンアップされているようなので、今後の成長に期待したいところです。