T-sql 比较链接服务器查询结果和本地查询结果
T-sql comparing results of linked server query with local query
我正在尝试将链接服务器查询的结果与本地查询的结果进行比较。我想做的是找出一台服务器上存在哪些登录,而另一台服务器上没有。目前只有 windows 个授权帐户可以。
我当前的查询是
Select name
from [linkedServer].master.[sys].[server_principals]
Where name not in ('Select name from sys.server_principals')
我得到的是链接服务器查询的结果,只是忽略了where。我该如何比较两者的结果?
首先,使用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
returns no row if any 来自子查询的值是 NULL
。这通常不是理想的行为。
我正在尝试将链接服务器查询的结果与本地查询的结果进行比较。我想做的是找出一台服务器上存在哪些登录,而另一台服务器上没有。目前只有 windows 个授权帐户可以。
我当前的查询是
Select name
from [linkedServer].master.[sys].[server_principals]
Where name not in ('Select name from sys.server_principals')
我得到的是链接服务器查询的结果,只是忽略了where。我该如何比较两者的结果?
首先,使用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
returns no row if any 来自子查询的值是 NULL
。这通常不是理想的行为。