来自链接服务器的Openquery过程

时间:2016-08-29 16:08:36

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

我正在从服务器B调用程序:

select * from openquery(A,'exec sp_qa2')
服务器A中的

sp_qa2是:

use master
go
create procedure sp_qa2
begin
declare @sql nvarchar(1000)
SET @sql = 'USE [?];  EXEC    [dbo].[sp_qa1]'
EXEC sp_MSforeachdb @sql
end
服务器A中的

和sp_qa1是:

create procedure sp_qa1
begin
declare @a int
end

此错误正在返回:

  

Msg 208,Level 16,State 1,Procedure sp_MSforeach_worker,102行   [批处理开始第2行]无效的对象名称'#qtemp'。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您的关联服务器的RPCRPC OUT选项是否为TRUE

此外,您可以直接执行代码而无需使用openquery,如下所示:

EXEC [A].[database].[schema].sp_qa2

答案 1 :(得分:0)

您也可以尝试使用:

EXEC(@sql) AT [RemoteServer]