0

我正在设置一个 SQL Server 数据库,并获得了在远程服务器中调用存储过程的权限,以帮助填充一些表。

我在 Visual Studio 2008 中创建了一个链接服务器作为 SSIS,SQL Server Management Studio 2008 似乎不喜欢EXEC远程服务器的 SSIS 包中的语句。

因此,在成功设置链接服务器后,我尝试使用以下命令执行我的存储过程

Select * from OPENQUERY(LinkedServerName, 'exec  storedProc paramValue')

但是得到以下错误

消息 208,级别 16,状态 1,过程 storedProc,第 49 行
无效的对象名称“#tmp_bl”。

我已经尝试过Select我的链接服务器,但没有运气。

有谁知道 exec 语句应该是什么,以便我可以将它放入本地 SSIS 包中?

4

1 回答 1

0
Msg 208, Level 16, State 1, Procedure storedProc, 
Line 49 Invalid object name '#tmp_bl'.

看起来像您正在调用的 SP,然后尝试访问名为#tmp_bl.

因此,当您尝试从设计 (BIDS) 运行 SSIS 包时,它会验证包并且找不到临时表;所以错误。

解决方法:先创建临时表(使用SSMS/Sqlcmd),然后尝试运行包;喜欢

create table #tmp_tbl ....

如果您尝试使用dtexec实用程序从命令提示符运行包delayvalidation,则将包控件的属性(控制实际执行临时表的控件;DataFlow 任务或 SQLTask)设置为True( DelayValidation = True)。其中,在验证整个包时不会验证临时表是否存在。

于 2012-05-25T12:42:03.053 回答