Sql server 2008 在本地SQL server上的链接服务器上使用一个输入参数调用存储过程时出现问题
我正在设置一个SQL Server数据库,并获得了调用远程服务器中存储过程的权限,以帮助填充一些表 我在VisualStudio2008和SQLServerManagementStudio 2008中创建了一个链接服务器作为SSIS,这两个版本似乎不喜欢远程服务器SSIS包中的EXEC语句 因此,在成功设置了链接服务器之后,我尝试使用以下命令执行存储过程Sql server 2008 在本地SQL server上的链接服务器上使用一个输入参数调用存储过程时出现问题,sql-server-2008,stored-procedures,linked-server,Sql Server 2008,Stored Procedures,Linked Server,我正在设置一个SQL Server数据库,并获得了调用远程服务器中存储过程的权限,以帮助填充一些表 我在VisualStudio2008和SQLServerManagementStudio 2008中创建了一个链接服务器作为SSIS,这两个版本似乎不喜欢远程服务器SSIS包中的EXEC语句 因此,在成功设置了链接服务器之后,我尝试使用以下命令执行存储过程 Select * from OPENQUERY(LinkedServerName, 'exec storedProc paramValue'
Select * from OPENQUERY(LinkedServerName, 'exec storedProc paramValue')
但是得到以下错误
Msg 208,16级,状态1,程序storedProc,第49行
无效的对象名称“tmp_bl”
我已尝试选择我的链接服务器,但没有运气
有人知道exec语句应该是什么,这样我就可以把它放到本地SSIS包中吗
Msg 208, Level 16, State 1, Procedure storedProc,
Line 49 Invalid object name '#tmp_bl'.
看起来您正在调用的SP会依次尝试访问名为tmp_bl的临时表
因此,当您尝试从design BIDS运行SSIS包时,它会验证包,并且找不到临时表;因此,错误
解决方案:首先使用SSMS/Sqlcmd创建临时表,然后尝试运行包;像
create table #tmp_tbl ....
如果您试图使用dtexec实用程序从命令提示符运行包,则将包控件的delayvalidation属性设置为实际执行temp表的控件;DataFlow task或SQLTask to True DelayValidation=True。在验证整个包时,将不会验证以查看临时表是否存在。您能否解释为什么SSIS包不直接连接到第二台服务器?为什么它连接到第一个服务器,然后使用链接的服务器?storeproc sp中存在一些问题,请检查该sp中的“tmp_bl”文本。共享sp。嘿,伙计们,我已经解决了问题,这是我的MS SQL management Studio的一个配置问题-我需要进入LinkedServer->providers->OraOLEDB.oracle双击它,它会显示选项-选中“允许inprocess”选项。@user1417337:您可以为自己的问题写一个答案,这样您就可以帮助其他人解决类似的问题!但是为什么不直接从SSI连接到服务器呢?为什么要使用链接服务器呢?您的流程过于复杂。