はじめに
開発者別にデータベースを用意していると、最新のスキーマ定義と各開発者のスキーマ定義にズレが生じてしまうことがあります。また、本番にリリースすべきテーブルやストアドプロシージャを正しく配置できたかを確認したくなることもあります。そのような時にデータベース間のスキーマを簡単に比較および同期できるツールがあると便利です。
そこで、本稿ではOpen DBDiffというオープンソースを紹介します。Open DBDiffを利用すると、2つのデータベースを比較して、それらを同期するSQLを出力できます。
Open DBDiffとは
Open DBDiffは、SQL Server 2008(2005)のデータベーススキーマを比較できるツールです。2つのデータベースを比較して、これらを同期するためのアップグレードSQLを生成できます。
Open DBDiffでは、上図のツリービューに表示されているオブジェクトの比較が可能です。例えば、テーブル、カラム、制約、インデックス、ビュー、ストアドプロシージャ、ファンクション、ユーザー、ロール等の比較が可能です。
Open DBDiffの入手とセットアップ
Open DBDiffはCodePlexにて配布されています。ライセンスはGPLv2です。本稿では、執筆時点の最新バージョン「Open DBDiff 1.0 (Beta 8)」のインストーラ「Setup.rar」をダウンロードしています。
インストールは「Setup.exe」を実行して「Next」ボタンをクリックしていくだけです。
Open DBDiffの起動
インストールが成功すればデスクトップに「Open DBDiff 1.0」というアイコンが表示されます。これをダブルクリックするとメインウィンドウが開きます。
続けて、比較するDBの接続情報を設定します。左の「Source Database」に比較元のDBを、右の「Destinateion Database」に反映先のDBを設定します。「Test Connection」ボタンで接続設定をテストできます。 そして「Compare」ボタンをクリックすると、DBのオブジェクトを解析するダイアログが表示されます。
しばらくするとSchemaタブにスキーマの比較結果が表示されます。
比較結果の確認と色の違い
比較結果は色で確認することができます。黒色は変更なし、緑色は新規、青色は変更、赤色は削除です。
本稿のサンプルでは、古いDB(MyDB)と最新DB(NewDB)を比較しています。「Table1」は変更がないので黒色で表示されています。「Table2」は変更があるため青色で表示されています。
詳細を確認したい場合は、ツリーをクリックして変更内容をチェックできます。ここでは、Name列(赤色)が削除され、FirstName列とLastName列(緑色)が追加されていることがわかります。
カラムの追加と削除を色で判別できる |
Table_3は、緑色で表示されているので、新しく作られたオブジェクトであることがわかります。ツリー内のテーブル名をクリックすると、右側のNew objectタブに最新のテーブル定義が表示されます。