トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション

Red Gate Software < SQL Compare >の評価
実施期間:2006年6月

レポーター:PASSJ ビジネスインテリジェンス ボードリーダー 長崎 友嘉






下記リンクより、製品の 14 日間無料体験版がダウンロードできます。 
http://www.red-gate.jp/products/SQL_Compare/index.html■ はじめに

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 がもっと便利に
使えるように、皆様のご協力をよろしくお願いいたします。

 

 

SQL Compare その他の評価レポート
 
 

 

 

 

PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.