2016-09-23 111 views
-1

我必须比较Server1数据库A dbo.X和Server2,数据库B dbo.Y中的表。表X和表Y都包含相同的值。是否可以比较来自不同SQL服务器的表?

,所以我需要验证两个表包含所有行和列的值相同。可以做到吗?

谢谢

+1

当然这是可能的。 – dfundako

+1

'选择...从完全外部连接上B.primary_key = A.primary_key B其中A.primary_key为空或B.primary_key为空或A.not_null_column <> B.not_null_column或聚结(A.null_column,“! @#$%^')<> COALESCE(B.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然后 '选择*从1.0.0.1.A.dbo.X' 'EXCEPT' 'SELECT * FROM 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服务器 - >数据比较