SQL Server:运行 SELECT 查询的双跃点链接服务器



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

  • SQL Server 1 和 2 位于 Domain1 上
  • SQL Server_3 位于 Domain2 上。
  • SQL
  • Server_1 - 链接到 SQL Server_2,SQL Server 2 链接到 SQL Server 3。

我的 Windows 身份验证是所有 Windows 服务器上的管理员和所有 3 台服务器上的 SQL 服务器。我正在尝试对SQLServer_1运行SELECT查询,以使用SQLServer_2作为中间跳跃点从SQLServer_3中检索数据(直接在SQLServer_1SQLServer_3之间连接,不幸的是没有选择(

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

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

但是我收到此错误:

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

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

结果在:

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

所以两者都没有用。

请帮忙。甚至可能吗?

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

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

我从SQLServer_1运行了这个查询。据我了解,它运行查询 在第二个参数中选择查询SQLServer_2然后选择,然后 检索返回的结果。这对我来说非常有效。

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

再次感谢。

最新更新