2016-09-23 11 views
-1

私は、Server1データベースのdbo.XとServer2、データベースBのdbo.Yのテーブルを比較する必要があります。テーブルXとテーブルYの両方に同じ値が含まれています。異なるSQLサーバーのテーブルを比較することはできますか?

だから、両方のテーブルがすべての行と列に同じ値を含むことを検証する必要があります。それは可能ですか?

ありがとうございます。

+1

もちろん可能です。 – dfundako

+1

'select ... from B.完全な外部結合B on B.primary_key = A.primary_key A.primary_keyがnullまたはB.primary_keyがnullまたはA.not_null_column <> B.not_null_columnまたは合体(A.null_column、 '! – shawnt00

答えて

1

あなたは、サーバーが必要になりますリンクSSIS/Visual Studioのような任意のツールを使用しない場合。

Select * FROM Server1.databaseA.dbo.X 
EXCEPT 
Select * FROM Server2.databaseB.dbo.Y 

EXCEPTは、左側の入力クエリから、正しい入力クエリによって出力されない個別の行を返します。

EXCEPT

+0

だから私のserver1が1.0.0.1で、server2が1.0.3.4であれば、 'を選択すると言うことができます(' @#$%^ ')<>合併(B.null_column、'!@#$%^ ') ' * From 1.0.0.1.A.dbo.X' 'EXCEPT' '選択* 1.0.3.4.B.dbo.Y' これは正しい方法ですか? – user3174886

+0

はい、リンクサーバーが設定されている場合。 'X EXECEPT Y'と' Y EXCEPT X'の両方を実行する必要があります。両方とも0のレコードを返すと、テーブルには同じレコードが含まれます。 – p2k

0

確かに、リンクサーバーを作成することで可能です。 、それを作成するには、このマニュアルに従ってください:この後 Creating Linked Servers

あなたは、このような別のサーバーにSQL-クエリを作ることができます:

SELECT name FROM [SRVR002\ACCTG].master.sys.databases ; 
0

Visual Studioをインストールしている場合は、より簡単な方法があります。スキーマとデータを任意のサーバーと比較するオプションがあり、ツール内のターゲットサーバーも同様に更新できるので非常に効率的です。

VisualStudioを - >ツール - > SQLサーバ - >データの比較

関連する問題