• ベストアンサー

テーブルレイアウトの比較について

よろしくお願いします。 SQLServer2005についての質問です。 サーバA(DBサーバ)、サーバB(DBサーバ)が存在しています。 サーバAとサーバBのテーブルレイアウトを効率よく正確に 比較する方法を教えてください。 (差分を把握したい) どうぞよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.5

>手元のPC環境では「テーブル」という項目がありませんでしたが、 サーバ名 -> システムデータベース -> msdb で試したからでしょうか。 そうですね。どうも、利用者側が作成したテーブルしか表示しない みたいなので、msdbだと、システム系のテーブルしかないと 思いますので、表示されなかったんだと思います。 ご確認下さい。

nao-k
質問者

お礼

昨年中は、大変お世話になりました。 お礼の書き込みがまだであったことに気づきました、、。 申し訳ありませんでした。 そもそもの目的は達成したのですが、もともとDBをあまり 知らなかったので、年末/年始に勉強していました。 また何かありましたらよろしくお願いいたします。

その他の回答 (4)

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.4

了解しました。 ■比較ツールについて ちなみに、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なのか その辺りが良く見えません。 テーブル比較に無駄な工数を裂くぐらいであれば、 先日私が紹介したフリーソフトで説明がつくと思うんですが... その点だけは、理解しかねるところです。

nao-k
質問者

お礼

ご丁寧なアドバイスありがとうございます。 自分の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)
回答No.3

申し訳ないのですが、まだ私が確認したいことの趣旨をご理解頂けていないようなので、言い方を変えます。 フリーソフトについては、了解しましたが、 使用が許されているソフト、現在、ご自身のPCにインストールされているソフト類を可能な限り教えて頂けませんか? 使えるソフトによって、回答方法もかわります! また、上記とは別に、SQL Server Management Studioをインストールしていると思いますが、正確なエディション名を教えて下さい。 エディションによって、アドバイス方法が変わりますので、 正確に教えて下さい。

nao-k
質問者

補足

補足要求ありがとうございます。 趣旨を理解できず、すみません。 基本的に、フリーソフトが使用禁止ということになり、 許可されているソフトはそれ以外になります。 また、現在自分のPCへインストールしているソフトは、 Microsoft Office 2003(Excel,Word,Powerpoint)と、 自分のPCでもSQLを勉強できるよう、 SQL Server 2005 Express Edtion をインストールしています。 サーバに入っているSQL Serve 2005 のエディションは、 Enterprise になります。 他、足りないことはありますでしょうか。

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.2

以前の回答にも書きましたが、*.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なのかによって、回答方法が変わりますので、 詳細をもう少し詳しくご教授頂けると有難いです。 (できるだけ、お力になりたいと思いますので) よろしくお願いします。

nao-k
質問者

お礼

お礼が遅くなりすみません。 自分でいろいろと試行錯誤してみました。 >、*.sql ファイルを一括出力させ、 実は、これのやりかたが判らないです。 比較は、「現場で使えるSQL」という本から SP_TABLES と SP_COLUMNS というのを見つけて実行し、出力結果をExcelで 表にして行いました。 しかし、Excel上でいろいろと手作業もあり、 けっして効率の良いものではないかな?と思っています。 フリーソフトは、ローカル(自分のPC)であれば、必要であれば 可能ですが原則禁止です。 (フリーソフトの比較結果をExcelなどへアウトプットして資料化する必要はあります)

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.1

SQL Server Compare というフリーソフトがあります。(ただし、英語) http://www.yessoft.com/dnn/ これなら、DBをまたがったテーブルやストアドでもある程度は効率よく 比較はできると思います。 上記以外の比較方法で、確実に比較を行う方法としては、 少し手間はかかりますが、ALTER TABLE文かCREATE TABLE文の *.sql ファイルを一括出力させ、DIFFツール等で、 *.sql ファイル同士を比較させるのも手かもしれません。 (少々面倒ですが) ご参考になれば幸いです。

参考URL:
http://sonic64.com/2005-12-15.html
nao-k
質問者

お礼

アドバイスありがとうございます。 フリーソフトは使用できないのです。 >少し手間はかかりますが、ALTER TABLE文かCREATE TABLE文の >*.sql ファイルを一括出力させ、DIFFツール等で、 >*.sql ファイル同士を比較させるのも手かもしれません。 データベースやSQLはさっぱり判らないのですが、どのように実行すれば良いでしょうか。

関連するQ&A