我是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_1
和SQLServer_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')
再次感谢。