- ベストアンサー
テーブルレイアウトの比較について
よろしくお願いします。 SQLServer2005についての質問です。 サーバA(DBサーバ)、サーバB(DBサーバ)が存在しています。 サーバAとサーバBのテーブルレイアウトを効率よく正確に 比較する方法を教えてください。 (差分を把握したい) どうぞよろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>手元のPC環境では「テーブル」という項目がありませんでしたが、 サーバ名 -> システムデータベース -> msdb で試したからでしょうか。 そうですね。どうも、利用者側が作成したテーブルしか表示しない みたいなので、msdbだと、システム系のテーブルしかないと 思いますので、表示されなかったんだと思います。 ご確認下さい。
その他の回答 (4)
- kero_mio
- ベストアンサー率90% (94/104)
了解しました。 ■比較ツールについて ちなみに、Microsoft Windows SDK for Visual Studio または、Visual Studio(バージョンは何でも良い) はインストールされていますか?もしくは、インストールは 認められていますか? (できれば、6.0, 2002, 2003, 2005) また、SDKは、マイクロソフトが開発者用のツールという位置づけ で作ったものですので、なんとか会社側に許可を頂き、 もしインストールしていなければ、是非インストールして頂くのがいいでしょう。 (フリーソフトという位置づけではないので、どんなに厳しい 企業でもマイクロソフト製品ということでSDKぐらいはインストール させてくれると思います。貴方様がきちんと説明できれば、Noという企業はないはずです。) もし、SDKをインストールされていなければ、 http://www.microsoft.com/downloads/details.aspx?FamilyId=149187AC-7008-4F49-A00A-26DCEBE0FC32&displaylang=en から入手するか、Visual Studio 6.0以降をお持ちであれば、 インストールメディアから、SDKだけをインストールしてください。 インストールしたSDKには、WinDiffというテキストファイルを 比較するツールがありますので、こいつを使ってテーブルを比較します。 ■SQL Server Management Studio の Service Pack さて、WinDiffで何を比較するかというと、 SQL Server Management Studio Express Editionを 使って比較元、比較先のDBに対して、*.sqlファイルを作成 してあげます。 ます、SQL Server Management Studio Express Editionで *.sqlを生成させるには、SQL Server Service Pack 2 (SP2)を インストールする必要があります。 (理由:テーブルレイアウト構成を*.sql形式で出力できる機能を強化するため) http://www.microsoft.com/downloads/details.aspx?familyid=D07219B2-1E23-49C8-8F0C-63FA18F26D3A&displaylang=ja 既に適用済みであればOKですが、適用していない場合は 適用してください。 Express Editionのインストールをしているぐらいなので、 SP2もフリーソフトだからダメということはないと思いますが、 もし、企業方針で勝手にSPをインストールできない場合は、 別のやり方を考えます。 ■*.sql ファイルの生成方法 SQL Server 2005 SP2 をインストールしたら、 *.sqlファイルを作成します。 *.sqlファイルの作り方ですが、 SQL Server Management Studio Express Editionで、 サーバ名 -> 比較元DB名を右Clickし、[タスク]->[スクリプト作成] を選択します。 すると「スクリプト作成ウィザード」というのが立ち上がりますので、 ウィザード内容に従い、*.sqlファイルを生成していきます。 途中で、「オブジェクトの種類の選択」という画面が現れますので、 そこで、「テーブル」というチェックボックスをONにして [次へ]ボタンで画面を進めて下さい。 また、[テーブルの選択]という画面も表示されますので、 [すべて選択]を押して、[次へ]ボタンで画面を進めて下さい。 さらに、「出力オプション」という画面が表示されましたら、 「スクリプトをファイルに保存」を選択し、[完了]ボタンを 押して、比較元のDBにあるテーブルをCREATE文にして *.sqlファイルをご自身がわかりやすい場所に保存します。 同じ要領で、比較先についても同じように実行します。 (比較元と比較先で、*.sqlファイルがぶつからないように保存します) ■比較方法 後は、Microsoft Windows SDK for Visual Studioにある WinDiffというツールを使って、比較元の*.sqlファイルと 比較先の*.sqlファイルを比較します。 WinDiffの使い方は、[File]メニューの[Compare File]を 選択し、比較元の*.sql ファイルと比較先の*.sqlファイルを 選択すれば、比較できます。 両者に違いがあれば、色で教えてくれますので、色が違う部分だけ を抜き出していけば、少しは楽に比較ができると思います。 # WinDiff については、 http://itpro.nikkeibp.co.jp/members/ITPro/ITBASIC/20050513/160795/ にも、概要が記載されているのでご覧下さい。 # Excelにまとめる部分については、1つ1つまとめていくか VBAでマクロを作るのも手です。 ■最後に SQL Server 2005 Express Edition も事実上、フリーソフトですよ! 先日私が紹介したフリーソフトはダメなのに、 SQL Server 2005 Express EditionはインストールOKなのか その辺りが良く見えません。 テーブル比較に無駄な工数を裂くぐらいであれば、 先日私が紹介したフリーソフトで説明がつくと思うんですが... その点だけは、理解しかねるところです。
お礼
ご丁寧なアドバイスありがとうございます。 自分のPCへインストールしているのは「Microsoft SQL Server 2005 Express Edition with Advanced Services Service Pack 2」ですのでSP2が適用されています。 しかし、実際のサーバはSP2未適用であり今後SP2を適用することはできません(企業方針)。 ■SDKについて >ちなみに、Microsoft Windows SDK for Visual Studio >または、Visual Studio(バージョンは何でも良い) インストールしていないのでご紹介くださったページからダウンロードしようと し、リンクを辿り、下記をすべてダウンロードしようとしていますが、 SDKについてよく知らないので確認中です。 http://www.microsoft.com/downloads/details.aspx?familyid=EBA0128F-A770-45F1-86F3-7AB010B398A3&displaylang=en ■*.sql ファイルの生成方法について すみません、この操作のことを仰っていたのですね。 ありがとうございます、判りました。 >そこで、「テーブル」というチェックボックスをONにして 手元のPC環境では「テーブル」という項目がありませんでしたが、 サーバ名 -> システムデータベース -> msdb で試したからでしょうか。 次回サーバを触れる際に、実機で確認してみます。 ■フリーソフトについて 言葉の定義が曖昧なのだと思います。申し訳ございません。 無償であっても、Microsoftから提供されているソフト類は、自分のPC にインストールしてもあまり会社から指摘は受けません。
- kero_mio
- ベストアンサー率90% (94/104)
申し訳ないのですが、まだ私が確認したいことの趣旨をご理解頂けていないようなので、言い方を変えます。 フリーソフトについては、了解しましたが、 使用が許されているソフト、現在、ご自身のPCにインストールされているソフト類を可能な限り教えて頂けませんか? 使えるソフトによって、回答方法もかわります! また、上記とは別に、SQL Server Management Studioをインストールしていると思いますが、正確なエディション名を教えて下さい。 エディションによって、アドバイス方法が変わりますので、 正確に教えて下さい。
補足
補足要求ありがとうございます。 趣旨を理解できず、すみません。 基本的に、フリーソフトが使用禁止ということになり、 許可されているソフトはそれ以外になります。 また、現在自分のPCへインストールしているソフトは、 Microsoft Office 2003(Excel,Word,Powerpoint)と、 自分のPCでもSQLを勉強できるよう、 SQL Server 2005 Express Edtion をインストールしています。 サーバに入っているSQL Serve 2005 のエディションは、 Enterprise になります。 他、足りないことはありますでしょうか。
- kero_mio
- ベストアンサー率90% (94/104)
以前の回答にも書きましたが、*.sql ファイルを一括出力させ、 出力させたテキストファイルをDIFFツールで比較というのは やってみましたか?それともできなかったのでしょうか? SQL Server Management Studio がインストールされていないとか、 SQL Server Management Studioの使い方がわからないとか でしょうか? (状況によって、回答内容が変わってきますので、 もう少し、状況を細かく教えて下さい) >フリーソフトは使用できないのです。 「SQL Server Compare」という比較ツール(フリーソフト)は、 別にDBサーバにインストールして比較させるのではなく、 ご自身のPCにインストールしても比較可能ですが、 ご自身のPC(ローカル)ですら、フリーソフトのインストールを 禁じられているのでしょうか? もしローカルPCですら、ダメということであれば、 今、手持ち(ご自身のPCにインストールされている)ソフトを 使って比較を行うしかありませんので、どんなものがソフト類が インストールされているかによってもアドバイス方法は変わります。 (例:SQL Server Management Studio, Visual Studio .NET 、 Excel、Access 等) 何がOKで、何がNGなのかによって、回答方法が変わりますので、 詳細をもう少し詳しくご教授頂けると有難いです。 (できるだけ、お力になりたいと思いますので) よろしくお願いします。
お礼
お礼が遅くなりすみません。 自分でいろいろと試行錯誤してみました。 >、*.sql ファイルを一括出力させ、 実は、これのやりかたが判らないです。 比較は、「現場で使えるSQL」という本から SP_TABLES と SP_COLUMNS というのを見つけて実行し、出力結果をExcelで 表にして行いました。 しかし、Excel上でいろいろと手作業もあり、 けっして効率の良いものではないかな?と思っています。 フリーソフトは、ローカル(自分のPC)であれば、必要であれば 可能ですが原則禁止です。 (フリーソフトの比較結果をExcelなどへアウトプットして資料化する必要はあります)
- kero_mio
- ベストアンサー率90% (94/104)
SQL Server Compare というフリーソフトがあります。(ただし、英語) http://www.yessoft.com/dnn/ これなら、DBをまたがったテーブルやストアドでもある程度は効率よく 比較はできると思います。 上記以外の比較方法で、確実に比較を行う方法としては、 少し手間はかかりますが、ALTER TABLE文かCREATE TABLE文の *.sql ファイルを一括出力させ、DIFFツール等で、 *.sql ファイル同士を比較させるのも手かもしれません。 (少々面倒ですが) ご参考になれば幸いです。
お礼
アドバイスありがとうございます。 フリーソフトは使用できないのです。 >少し手間はかかりますが、ALTER TABLE文かCREATE TABLE文の >*.sql ファイルを一括出力させ、DIFFツール等で、 >*.sql ファイル同士を比較させるのも手かもしれません。 データベースやSQLはさっぱり判らないのですが、どのように実行すれば良いでしょうか。
お礼
昨年中は、大変お世話になりました。 お礼の書き込みがまだであったことに気づきました、、。 申し訳ありませんでした。 そもそもの目的は達成したのですが、もともとDBをあまり 知らなかったので、年末/年始に勉強していました。 また何かありましたらよろしくお願いいたします。