SQL Server:运行SELECT Query的双跳链接服务器

时间:2017-08-21 02:35:56

标签: sql-server select linked-server

我是SQL Server的新手。我有一个问题:我有3个SQL服务器,域Domain1上有2个,Domain2上有1个。

  • SQL Server 1& 2在Domain1
  • SQL Server_3在Domain2上。
  • SQL Server_1 - 链接到SQL Server_2,SQL Server 2链接到SQL Server 3。

我的Windows身份验证是所有3台服务器上所有Windows服务器和SQL Server上的Admin。我正在尝试在SELECT上运行SQLServer_1查询,以SQLServer_3作为中间跳转点(在SQLServer_2和{之间直接连接)从SQLServer_1检索数据{1}}遗憾的是没有选项)

我已尝试在SQLServer_3上运行这些查询:

SQLServer_1

但是我收到了这个错误:

  

对象名称“SQLServer_2.SQLServer_3.DBName_1.Table_Name1”包含的前缀数量超过最大数量。最大值为3。

 SELECT * 
 FROM [SQLServer_2].[SQLServer_3].[DBName_1].[Table_Name1]

结果:

  

在sys.servers中找不到服务器'SQLServer_3'。验证是否指定了正确的服务器名称。如有必要,执行存储过程sp_addlinkedserver以将服务器添加到sys.servers。

所以两者都不起作用。

请帮助。它甚至可能吗?

1 个答案:

答案 0 :(得分:1)

  

谢谢ZLK 23.他的建议奏效了。我不知道如何发布它   作为答案,如果有人请帮助我。

也许在第二台服务器上使用OPENQUERY在第三台服务器上运行查询?例如在服务器1上从openquery中选择*(server2,' select * from server3.database.schema.table;');或者,您可以考虑从server1在server2(连接到server3)上执行存储过程。 - ZLK 23小时前

  

我从SQLServer_1运行此查询。据我所知,它运行查询   在SQLServer_2上选择第二个参数中的SELECT QUERY和   检索结果。这对我来说很完美。

SELECT * FROM OPENQUERY(SQLSERVER_2,'SELECT * FROM 'SQLSERVER_3.DBNAME.TABLENAME')

再次感谢你。