Sql SSMS-在一个查询中查询多个服务器

Sql SSMS-在一个查询中查询多个服务器,sql,sql-server,tsql,ssms,Sql,Sql Server,Tsql,Ssms,因此,我尝试在SSMS的SQLCMD模式下运行这个查询: :CONNECT SERVER1 select * from [SERVER1].DB1.dbo.Project where id not in ( :CONNECT [SERVER2] select distinct id from [SERVER2].DB2.dbo.Project ); 然而,当我遇到这个错误时,我不确定我做错了什么。任何帮助都将不胜感激。谢谢 致命的脚本错误。无法

因此,我尝试在SSMS的SQLCMD模式下运行这个查询:

:CONNECT SERVER1
  select * 
  from [SERVER1].DB1.dbo.Project
  where id not in 
  (
      :CONNECT [SERVER2]
      select distinct id from [SERVER2].DB2.dbo.Project 
  );
然而,当我遇到这个错误时,我不确定我做错了什么。任何帮助都将不胜感激。谢谢

致命的脚本错误。无法打开SQLCMD中指定的连接 剧本


这对于SQLCMD查询无效,您将无法以这种方式执行所尝试的操作

通过由4部分组成的命名连接到链接的服务器,就像您所做的那样。去掉它的控制语言。这里不需要SQLCMD

  select * 
  from [SERVER1].DB1.dbo.Project
  where id not in 
  (
      select distinct id from [SERVER2].DB2.dbo.Project 
  );

我以前尝试过此操作,但根据所连接的数据库,在select查询对象上出现“Invalid object name”错误。例如,如果我在Server1.db1上打开了一个新的查询窗口,那么就会得到无效的对象名Server2.db2。。如果我从Server2.db2打开一个新的查询窗口,它将为Serer1.db1提供“无效对象名”。我还尝试在顶部使用Master,但没有任何区别。是否将链接服务器设置为名称Server1和Server2?我没有。还有别的办法吗?因为我收到一条消息,说我没有权限对本地数据库执行操作(sp_addlinkedserver),所以它无法工作是因为没有链接的服务器。这些将需要添加,以使这项工作。听起来像是权限问题,您需要有权限才能创建这些对象。如果您不能,请让您的系统管理员或DBA为您创建:)