SQL-针对不同的数据库服务器查询重复记录

时间:2018-08-22 15:00:11

标签: sql sql-server

我们有两个单独的SQL服务器,每个服务器都承载相同的表。本质上,其中一个是“奴隶”,另一个是“主人”。主机每隔10分钟调用一次从机,并将记录从从机中拉出到主机,然后删除从机上的记录。

但是,我们现在有一个场景,其中(由于应用程序中的编码错误),在主从设备上存在一些记录,这阻止了随着过程轰炸而完成记录的传输重复条目周围出现异常错误。

我要做的是提出一个查询,该查询将显示所有重复的记录(即两个服务器上都存在),以便从从站清除这些记录。

我已使用Management Studio中的“注册服务器”选项将两个服务器添加到单个sql查询中。我已经通过识别两个数据库中都存在的一条记录并使用Select语句(我的逻辑如下)来测试了这一点;

SELECT [Reserved]
FROM   [sctracking].[dbo].[scTracking]
WHERE [Reserved] = 'WHATEVER_THE_VALUE_IS'

这将返回两行,类似

Servername - Reserved
Server1    - WHATEVER_THE_VALUE_IS
Server2    - WHATEVER_THE_VALUE_IS

然后我要“尝试”做的是使用一个计数值跨两个数据库运行,类似;

SELECT [Reserved]
       , COUNT(1) as CNT
FROM [sctracking].[dbo].[scTracking]
GROUP BY [Reserved]

但是上述逻辑显然不起作用。

任何人可以在这里给我的帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解您,但是假设我知道,当您链接服务器时,就这么简单:

SELECT ColA, ColB FROM ServerNameA.DatabaseA.dbo.TableA AS A
WHERE EXIST 
( SELECT * FROM ServerNameB.DatabaseB.dbo.TableB AS B
  WHERE A.ColA = B.ColA )