MS SQL 2005でリンクされたデータベースからストアドプロシージャを実行しようとしています。リンクされたデータベースは、iseriesサーバー上のdb2データベースです。iSeriesIBMDASQLサービスプロバイダーを使用しています。単純なvbscriptとadoを使用して、問題なくストアドプロシージャをクエリできます。SQL Serverのクエリアナライザで同じストアドプロシージャを実行しようとすると、結果が表示されません。クエリアナライザは常に「コマンドが実行されました」と表示し、一時テーブルでselect *を実行すると、値が表示されません。私は何が間違っているのですか????? ありがとう!
-以下のクエリアナライザからのコード--
DECLARE @emailToAddress char(50)
DECLARE @emailFromAddress char(50)
set @emailToAddress = 'customer.service@company.com'
set @emailFromAddress = 'customer@gmail.com'
If Object_ID('tempdb..#tmpResultTbl') Is Not Null
Drop Table #tmpResultTbl
Create Table #tmpResultTbl
(
OUTPGMID Char(150))
--SET FMTONLY Off
Set NoCount On
Insert Into #tmpResultTbl
EXEC ('CALL abicqual.VP_GETCCEPGMID(?, ?) ', @emailToAddress, @emailFromAddress) AT MAM400
Select * From #tmpResultTbl
更新:openqueryを使用するために更新されたコードは次のとおりです...まだ運がありません:(
DECLARE @TSQL varchar(8000)DECLARE @emailToAddress varchar(50)DECLARE @emailFromAddress varchar(50)SET @emailToAddress ='customer.service@company.com' SET @emailFromAddress ='customer@gmail.com' SET @TSQL = ' SELECT * FROM OPENQUERY(MAM400、'' CALL abicqual.VP_GETCCEPGMID('''''+ @emailToAddress +'''''、'''''+ @emailFromAddress +'''''' +')'' ' +')' @TSQL EXEC(@TSQL)を出力します
--以下の出力--SELECT*FROM OPENQUERY(MAM400、'CALL abicqual.VP_GETCCEPGMID(''customer.service@company.com''、''customer@gmail.com'')')メッセージ7357、レベル16、状態2、1行目オブジェクト「CALL abicqual.VP_GETCCEPGMID('customer.service@company.com'、'customer@gmail.com')」を処理できません。リンクサーバー"MAM400"のOLEDBプロバイダー"IBMDASQL"は、オブジェクトに列がないか、現在のユーザーにそのオブジェクトに対するアクセス許可がないことを示しています。