Sql server 从SQLServer2008链接服务器调用DB2存储过程

Sql server 从SQLServer2008链接服务器调用DB2存储过程,sql-server,sql-server-2008,db2,Sql Server,Sql Server 2008,Db2,我有一个从SQLServer2008到DB2的链接服务器。链接服务器使用IBM驱动程序,而不是Microsoft驱动程序 因此,这在SQL Server中起作用: exec ('call RERTEBT.GET_DEFINITION (69,'''','''')') AT MyLinkedDB2Server 这也适用于使用openQuery。。。从另一个表返回不同的数据 select RPMG_ETY_CD, ROW_CU_DATA_IN, ROW_EF_DT, ROW_XPR_DT

我有一个从SQLServer2008到DB2的链接服务器。链接服务器使用IBM驱动程序,而不是Microsoft驱动程序

因此,这在SQL Server中起作用:

exec ('call RERTEBT.GET_DEFINITION (69,'''','''')') AT MyLinkedDB2Server
这也适用于使用openQuery。。。从另一个表返回不同的数据

select
RPMG_ETY_CD,
     ROW_CU_DATA_IN,
ROW_EF_DT,
ROW_XPR_DT,
RPMG_ETY_NM
from 
OPENQUERY 
         (MyLinkedDB2Server,
                'select 
                      RPMG_ETY_CD,
                      ROW_CU_DATA_IN,
                      ROW_EF_DT,
                      ROW_XPR_DT,
                      RPMG_ETY_NM
                 from RERTEBT.V1RERRMM')
但是,我无法通过DB2存储过程获得返回数据的select

这失败了-

SELECT FLT_DFN_ID, FLT_SRC_DFN_NO, FLT_VRSN_NO, FLT_STAT_CD, FLT_TY_CD, FLT_NAME 
      FROM OPENQUERY (MyLinkedDB2Server, 
                         'call RERTEBT.GET_DEFINITION 69,'''','''')')
有没有人知道如何从SQLServer链接服务器调用DB2存储过程并返回数据,或者可以这样做。我在某个地方读到DB2不能做到这一点,但还没有看到任何关于它的真正文档


谢谢,您应该能够做到这一点:

EXEC ('{CALL RERTEBT.GET_DEFINITION (69,'''','''')}') AT MyLinkedDB2Server;
甚至可以通过传递变量进行清理

EXEC ('{CALL RERTEBT.GET_DEFINITION (?,?,?)}', 69, '', '') AT MyLinkedDB2Server;

约瑟夫回答的更多解释: 您需要右键单击链接服务器的属性 然后->服务器选项 右窗格中的RPC和RPC Out选项必须为TRUE


-已编辑-我无法对答案发表评论,但没有50名代表

有人有任何想法吗?Thnkst在@gonatee进行了上述服务器设置更改后,此操作才起作用。非常感谢。