T-sql将链接服务器查询的结果与本地查询

时间:2017-11-09 17:29:46

标签: sql sql-server tsql linked-server

我正在尝试将链接服务器查询的结果与本地查询进行比较。我尝试做的是找出一台服务器上存在哪些登录而不是另一台服务器上存在的登录。只是windows auth帐户现在还可以。

我当前的查询是

Select name 
from [linkedServer].master.[sys].[server_principals]  
Where name not in ('Select name from sys.server_principals')

我得到的是链接服务器查询的结果,只有忽略的地方。我该如何比较两者的结果?

1 个答案:

答案 0 :(得分:0)

首先,使用not exists。其次,我认为你的单引号是错误的:

select sp.name
from [linkedServer].master.[sys].[server_principals] sp
where not exists (select 1
                  from sys.server_principals sp2
                  where sp2.name = sp.name
                 );

我强烈建议您养成使用not exists使用子查询而不是not in的习惯,因为not in如果任何值不返回任何行子查询是NULL。这通常不是理想的行为。