アプリ版:「スタンプのみでお礼する」機能のリリースについて

よろしくお願いします。
SQLServer2005についての質問です。

サーバA(DBサーバ)、サーバB(DBサーバ)が存在しています。

サーバAとサーバBのテーブルレイアウトを効率よく正確に
比較する方法を教えてください。
(差分を把握したい)

どうぞよろしくお願い致します。

A 回答 (5件)

SQL Server Compare というフリーソフトがあります。

(ただし、英語)
http://www.yessoft.com/dnn/

これなら、DBをまたがったテーブルやストアドでもある程度は効率よく
比較はできると思います。

上記以外の比較方法で、確実に比較を行う方法としては、
少し手間はかかりますが、ALTER TABLE文かCREATE TABLE文の
*.sql ファイルを一括出力させ、DIFFツール等で、
*.sql ファイル同士を比較させるのも手かもしれません。
(少々面倒ですが)

ご参考になれば幸いです。

参考URL:http://sonic64.com/2005-12-15.html
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

フリーソフトは使用できないのです。

>少し手間はかかりますが、ALTER TABLE文かCREATE TABLE文の
>*.sql ファイルを一括出力させ、DIFFツール等で、
>*.sql ファイル同士を比較させるのも手かもしれません。

データベースやSQLはさっぱり判らないのですが、どのように実行すれば良いでしょうか。

お礼日時:2007/07/25 06:15

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

お礼が遅くなりすみません。
自分でいろいろと試行錯誤してみました。

>、*.sql ファイルを一括出力させ、
実は、これのやりかたが判らないです。

比較は、「現場で使えるSQL」という本から SP_TABLES と
SP_COLUMNS というのを見つけて実行し、出力結果をExcelで
表にして行いました。
しかし、Excel上でいろいろと手作業もあり、
けっして効率の良いものではないかな?と思っています。

フリーソフトは、ローカル(自分のPC)であれば、必要であれば
可能ですが原則禁止です。
(フリーソフトの比較結果をExcelなどへアウトプットして資料化する必要はあります)

お礼日時:2007/08/05 20:38

申し訳ないのですが、まだ私が確認したいことの趣旨をご理解頂けていないようなので、言い方を変えます。



フリーソフトについては、了解しましたが、
使用が許されているソフト、現在、ご自身のPCにインストールされているソフト類を可能な限り教えて頂けませんか?
使えるソフトによって、回答方法もかわります!

また、上記とは別に、SQL Server Management Studioをインストールしていると思いますが、正確なエディション名を教えて下さい。
エディションによって、アドバイス方法が変わりますので、
正確に教えて下さい。

この回答への補足

補足要求ありがとうございます。

趣旨を理解できず、すみません。

基本的に、フリーソフトが使用禁止ということになり、
許可されているソフトはそれ以外になります。
また、現在自分のPCへインストールしているソフトは、
Microsoft Office 2003(Excel,Word,Powerpoint)と、
自分のPCでもSQLを勉強できるよう、
SQL Server 2005 Express Edtion をインストールしています。

サーバに入っているSQL Serve 2005 のエディションは、
Enterprise になります。

他、足りないことはありますでしょうか。

補足日時:2007/08/05 22:55
    • good
    • 0

了解しました。



■比較ツールについて

ちなみに、Microsoft Windows SDK for Visual Studio
または、Visual Studio(バージョンは何でも良い)
はインストールされていますか?もしくは、インストールは
認められていますか?
(できれば、6.0, 2002, 2003, 2005)

また、SDKは、マイクロソフトが開発者用のツールという位置づけ
で作ったものですので、なんとか会社側に許可を頂き、
もしインストールしていなければ、是非インストールして頂くのがいいでしょう。
(フリーソフトという位置づけではないので、どんなに厳しい
企業でもマイクロソフト製品ということでSDKぐらいはインストール
させてくれると思います。貴方様がきちんと説明できれば、Noという企業はないはずです。)

もし、SDKをインストールされていなければ、

http://www.microsoft.com/downloads/details.aspx? …

から入手するか、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? …

既に適用済みであれば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/ITBASI …
にも、概要が記載されているのでご覧下さい。

# Excelにまとめる部分については、1つ1つまとめていくか
 VBAでマクロを作るのも手です。

■最後に
SQL Server 2005 Express Edition も事実上、フリーソフトですよ!
先日私が紹介したフリーソフトはダメなのに、
SQL Server 2005 Express EditionはインストールOKなのか
その辺りが良く見えません。
テーブル比較に無駄な工数を裂くぐらいであれば、
先日私が紹介したフリーソフトで説明がつくと思うんですが...
その点だけは、理解しかねるところです。
    • good
    • 1
この回答へのお礼

ご丁寧なアドバイスありがとうございます。
自分の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? …


■*.sql ファイルの生成方法について
すみません、この操作のことを仰っていたのですね。
ありがとうございます、判りました。

>そこで、「テーブル」というチェックボックスをONにして
手元のPC環境では「テーブル」という項目がありませんでしたが、
サーバ名 -> システムデータベース -> msdb で試したからでしょうか。
次回サーバを触れる際に、実機で確認してみます。


■フリーソフトについて
言葉の定義が曖昧なのだと思います。申し訳ございません。
無償であっても、Microsoftから提供されているソフト類は、自分のPC
にインストールしてもあまり会社から指摘は受けません。

お礼日時:2007/08/06 01:40

>手元のPC環境では「テーブル」という項目がありませんでしたが、


サーバ名 -> システムデータベース -> msdb で試したからでしょうか。

そうですね。どうも、利用者側が作成したテーブルしか表示しない
みたいなので、msdbだと、システム系のテーブルしかないと
思いますので、表示されなかったんだと思います。
ご確認下さい。
    • good
    • 0
この回答へのお礼

昨年中は、大変お世話になりました。
お礼の書き込みがまだであったことに気づきました、、。
申し訳ありませんでした。

そもそもの目的は達成したのですが、もともとDBをあまり
知らなかったので、年末/年始に勉強していました。

また何かありましたらよろしくお願いいたします。

お礼日時:2008/01/06 20:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す