MSSQL使用远程链接服务器功能表连接本地表

时间:2018-01-25 06:25:38

标签: sql-server stored-procedures linked-server

我想加入一个带有表的本地表,并通过远程链接服务器函数返回。

这就是我执行远程链接服务器功能的方式。

exec linkedServer.DB.dbo.sp_executesql N'SELECT *  FROM FunctionA(''parameter'')' 

我想加入本地桌面,如下所示:

select * from LocalTable a 
left join 
    (exec linkedServer.DB.dbo.sp_executesql 
          N'SELECT * FROM FunctionA(''parameter'')') as b 
on a.key = b.key

我该怎么做?我需要临时表吗?

1 个答案:

答案 0 :(得分:3)

您需要使用OPENQUERY,并且要使联接需要添加功能列名称,例如;WITH b(col1, col2, ...)

;WITH b(key) AS (
    SELECT * FROM OPENQUERY (linkedServer, N'SELECT * FROM DB.dbo.FunctionA(''parameter'')')
)
SELECT * FROM LocalTable a
    LEFT JOIN b on a.key = b.key

或者你可以不用

SELECT * FROM LocalTable a
    LEFT JOIN (SELECT * FROM OPENQUERY (linkedServer, N'SELECT * FROM DB.dbo.FunctionA(''parameter'')'))b(key) 
        on a.key = b.key