kap*_*tan 4 sql-server linked-server
我有以下设置:
SQL-Server 1 --linked--> SQL-Server 2 --linked-> SQL-Server 3
Run Code Online (Sandbox Code Playgroud)
问题是我可以通过 SQL Server 2 从 SQL Server 1 查询 SQL Server 3 吗?
不幸的是,我有几个限制:
不幸的是,根据您对问题设置的条件,没有办法完成您想要的。
SQL Server 需要支持5部分命名,例如:
SELECT *
FROM server1.server2.database.schema.table;
Run Code Online (Sandbox Code Playgroud)
这显然行不通。
如果你不怕一点动态 SQL,你可以使用这样的东西:
DECLARE @cmd nvarchar(max) = N'
DECLARE @cmd nvarchar(max) = N''
SELECT @@SERVERNAME; --this would be where your query goes.
'';
EXEC (@cmd) AT linked_server_2;
';
EXEC (@cmd) AT linked_server_1;
Run Code Online (Sandbox Code Playgroud)
本质上,上面的代码在 上执行了一个动态 SQL 字符串linked_server_1
,但动态 SQL 实际上是一个嵌入的动态 SQL 字符串,它在 上执行查询linked_server_2
。