2013-09-04 5 views
2

У меня есть связанный сервер с SQL Server 2008 до DB2. Связанный сервер использует драйверы IBM, а не Microsoft.Вызов хранимой процедуры DB2 из связанного сервера SQL Server 2008

Так это работает с 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 Sproc

Это терпит неудачу -

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,'''','''')') 

Кто-нибудь знает, как вызвать хранимую процедуру DB2 из SQL Server Связанный сервер и вернуть данные, или это можно сделать. Я где-то читал, что DB2 can not делает это, но не видел никакой реальной документации.

Благодаря D

+0

У кого-нибудь есть идеи? thnks – Doiremik

ответ

1

Вы должны быть в состоянии сделать это:

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

Или даже уборщик с проходящими переменных

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

Это сработало после изменения настроек сервера, описанного выше @gonatee. Спасибо. –

3

больше объяснений ответа Иосифа: Вы должны право- щелкните ссылку связанного сервера «» « затем ->« вариант сервера « » RPC «и» RPC Out "вариант на правой панели должны быть ИСТИНА

- отредактированный - Я не могу прокомментировать ответ пока (дон 't have 50 rep)

+0

Это сработало. Спасибо! –

Смежные вопросы