|
PASSJ 会員の皆様こんにちは、BI 分科会担当ボードリーダの長崎です。
今回、PASSJ で募集していたレッドゲートソフトウェア(Red Gate Software)社のデータベース
スキーマ比較・同期ツール「SQL Compare」の評価レポート企画に応募し、担当することに
なりました。
私は一昨年・昨年に PASS Summit に参加してきたのですが(一昨年:オーランド、昨年:
ダラス)、このイベントにはレッドゲートソフトウェア社をはじめ多くのツールベンダが参加し、
SQL Compare のような開発者・DBA 向けのツールが多数紹介されていました。しかし日本語化
されているケースが少ないためか、国内では SQL Server 関連のサードパーティ製ツールはあまり
普及していないようです。SQL Server オプションのあるバックアップソフトウェアや、データベース暗号
化ソフトウェアなどが思い浮かびますが、開発者向け(またはそれに近い分野)のサードパーティ
ツールとなると、あまり思い当たらないのではないでしょうか。
そこで、今回の評価レポート企画に参加することで私自身が実際に体験し、PASSJ 会員の皆様
にも SQL Compare をはじめとしたサードパーティ製ツールの便利さを認識して頂こうと考え、企画に
参加することにしました。
-------------------------------------------------------------------- ■SQL Compare 機能概要
はじめに、SQL Compare の機能をおおまかに確認しておきましょう。
レッドゲートソフトウェア社日本語 Web サイトの、「Red Gate Software について」のページ
(http://www.red-gate.jp/about/index.html)の先頭にあるように、「Microsoft 開発者、テスター、
IT Pro のためのシンプルなツール」がこの会社が提供するツールのコンセプトです。レッドゲートソフト
ウェア社はシンプルで使い易い SQL Server 用ツールを複数提供しており、SQL Compare はその中
の 1 つで、データベーススキーマの比較・同期に特化したツールとなっています。
SQL Compare の機能は「データベーススキーマ同士を比較して差異を認識する」(比較機能)、
「差異を同期させる T-SQL スクリプトを生成し、実行する」(同期機能)に大別されます。比較機能
では「ホワイトスペースを無視する」「項目の大文字と小文字を無視する」などの比較ルールの
オプションが多数用意されており、また比較結果を HTML 形式でエクスポートする機能が用意され
ています。同期機能では、同期対象をオブジェクト単位で指定できる、同期用の T-SQL スクリプト
を確認・保管できる、などの特徴があります。
なお、データベーススキーマではなく「データ」を比較し、同期させる機能は姉妹製品の
「SQL Data Compare」の機能になっています。
--------------------------------------------------------------------
■基本的な操作手順
それでは、ここからは実際に試用してみた感想を含めて、述べていきたいと思います。
こういったサードパーティ製ツールは、インストールして使い慣れるまでが億劫だという印象があった
のですが、SQL Compare については全く当てはまりませんでした。
セットアップは簡単で、レッドゲートソフトウェア社の Web サイトから評価版をダウンロードし、簡単
なインストールの後、ライセンスのアクティベーションもインターネット経由ですぐに終わりました。
インストール後、比較と同期を何度か繰り返してみましたが、基本的な操作手順はこのようになる
ようです。
1. 比較対象の指定(2 つのデータベースの接続情報を登録)
2. 比較の実施・結果の確認
3. (必要に応じて)比較ルールの調整 → 再比較
4. (必要に応じて)比較結果レポートの出力
5. 同期対象の指定(対象オブジェクトを選択)
6. (必要に応じて)同期スクリプトの確認
7. 同期の実施・結果の確認
操作はいたってシンプルで、特に分かりにくいと思える部分もありませんでした。ヘルプも充実して
いるため、ヘルプを眺めながら何回か上記の手順を実施してみれば、慣れてくるのではないで
しょうか。
-------------------------------------------------------------------- ■試してみる
ある程度使い慣れたところで、SQL Server 2000と 2005 を使用して何パターンか試してみました。 |
□2005 同士の比較
はじめに、 2005 のサンプルデータベース “AdventureWorks” と、 2005 上に新規に作成した空のデータベースを対象として機能を試してみました。
|

比較・同期ともに 10 数秒程度で完了しましたが、同期操作では「拡張プロパティ」関係のエラー
が発生して同期に失敗しました。問い合わせたところ、日本語版がリリースされている Ver4 では、
デフォルト以外のスキーマのオブジェクトに拡張プロパティを作成している稀なケースについて、
対応していない部分があるそうです。
(ただし、SQL Server 2005 でのスキーマの考え方から述べると、稀なケースとは言えません。)
対応方法としては、同期スクリプトをファイルとして保存して(または「SQL Server Management
Studio でスクリプトを起動」を選択して)、拡張プロパティを追加する sp_addextendedprope の
引数 @level0type の「’USER’」を「’SCHEMA’」に変更すればよいようです。なお、SQL Server 2005
の Books Online には「レベル0 のオブジェクトの種類である USER および TYPE は、SQL Server の
今後のバージョンで削除される予定です。新しい開発作業では、これらの機能の使用を避け、
現在これらの機能を使用しているアプリケーションは修正するようにしてください」という記述 が
あります。
また、現時点ではユーザインタフェースは英語になりますが、最新版の Ver5 で試してみたところ
スムーズに同期することができました。
|
□差分把握
次に、差分把握を試してみるために、同期済みのデータベースに以下の処置を行いました。
・特定のテーブルの列名を変更する
・特定のテーブルの列順を変更する
・ストアドプロシージャにコメントを追加する
|
|

この差異も、しっかり認識しました。 SQL Compare の画面上で、 T-SQL スクリプトの 差分が比較できるため、大変分かり易いと思います。
|
□ 2000 と 2005 の比較
( 2000 同士では面白みが無いので) 2000 のサンプルデータベース ”Northwind” と、 2005 上に新規に作成した空のデータベースを比較してみましたが、比較・同期とも特に問題なく実施できました。 |
-------------------------------------------------------------------- ■特徴的な機能
試用する中で気に入った、 SQL Compare の特徴的な機能について、ご紹介したいと思います。
□スナップショット機能
SQL Compare のスナップショット機能は、データベースのメタデータをファイル( *.snp ファイル)として保存し、比較対象として指定することができるという機能です。
この機能によって、特定タイミングでの状態を保存でき、またオフライン状態での比較も可能になり
ます。 |
□比較ルールのオプション
比較ルールのオプションが多数用意されています。詳細な動作までは解説できませんので、ここではオプション指定画面を掲示するにとどめることにします。
|

|
--------------------------------------------------------------------
■ SQL Compare の使い道
私の経験の中でも、「この手のツールが欲しかった」ことが何度もあります。
数年前に SQL Server を採用しているパッケージソフトウェアの開発プロジェクトに参加していたこと
があるのですが、そのプロジェクトの終盤では 10 程度のデータベース環境を、ERD との同期状態を
把握しながら管理していく必要がありました。このときは、ERD と一致する「正となる」データベースを
用意した上で [sysindexkeys]、[sysindexes]、[syscolumns]、[sysobjects] などのシステムテーブル
へのクエリを活用して差分を認識する(一部は同期も取れる)仕組みを自作し、なんとか管理する
ことができましたが、そのコストを考えると、SQL Compare の存在を知らなかったことが悔やまれます。
知っていれば確実に採用していたでしょう。
もちろん、ソース(CREATE TABLE 文など)のバージョン管理や環境への適用手順がしっかり確立
できていれば回避できる”はず”なのですが、実際にはソースと実装オブジェクトが(または開発環境と
テスト環境が)同期できていることが、特にバグ調査時に不安になることが多々ありました。この
ツールがあればまずその不安を取り除くことができるため、とても頼りになると思います。
一般的に、システム開発のプロジェクトでは「開発環境」「テスト環境」「本番環境」などの形式で
複数のデータベース環境が用意されており、特にプロジェクトの後半では、複数環境を同期させて、
または同期状態を管理して運用していく必要が生じます。(既に運用に入っているシステムを
改修していくケースでも同様です。)
このとき、「データベーススキーマ比較・同期ツール」が活用されることは必然的なことだと思います
し、SQL Server では SQL Compare がデフォルトスタンダードだということです。
-------------------------------------------------------------------- ■おわりに
本レポートで、SQL Compare の便利さ・必要性を伝えることが出来たでしょうか。開発・管理の
効率化に大変役に立つと思いますので、レッドゲートソフトウェア社の Web サイトから評価版を
ダウンロードして試してい頂きたいと考えています。また、使い方などについても、SQL Server と同じ
ようにメーリングリストなどで情報共有していきたいと考えています。SQL Server がもっと便利に
使えるように、皆様のご協力をよろしくお願いいたします。
|
| |