【发布时间】:2016-08-29 16:08:35
【问题描述】:
我正在从服务器 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
此错误正在返回:
消息 208,级别 16,状态 1,过程 sp_MSforeach_worker,第 102 行 [Batch Start Line 2] 无效的对象名称“#qtemp”。
我该如何解决这个问题?
【问题讨论】:
-
看起来
#qtemp尚未在sp_MSforeach_worker中创建。您可以从发生此错误的过程中发布代码吗?此外,您提供的代码中的任何地方都没有提到此过程。它是如何执行的? -
sp_MSforeach_worker中的#qtemp表是系统过程,大家都有。这不是我创造的。
-
原来如此,我很抱歉。
标签: sql-server stored-procedures sql-server-2008-r2 linked-server