2011-07-25 100 views
1

私はOpenQueryでストアドプロシージャを呼び出し、パラメータをストアドプロシージャに渡します。OpenQueryでパラメータ化されたストアドプロシージャを呼び出す - SQL Server 2008

declare @Src nvarchar(max),@Tgt nvarchar(max) 
declare @sql_str nvarchar (4000) 
set @Src = '$\VMT\Versions\0900\AMS\' 
set @Tgt = '$\VMT\Versions\0900\Base\' 
set @sql_str = 'exec [Tfs_VMT Collection].dbo.MergeCandidate ''' + @Src+ ''' , ''' [email protected]+''' ' 
set @sql_str = 'select * into #test from openquery(ODSSERVER,''' +Replace(@sql_str,'''', '''''') +''')' 

print @sql_str 

EXEC (@sql_str) 

が、これは誤り

メッセージ7357、レベル16、状態2次で失敗し、1行目
は、オブジェクト「EXEC [Tfs_VMT コレクション] .dbo.MergeCandidate「$ \を処理できませんVMT \ Versions \ 0900 \ AMS \ '、 ' $ \ VMT \ Versions \ 0900 \ Base \ '"に変更する必要があります。 のOLE DBプロバイダー「SQLNCLI10」は、オブジェクト「」が存在しないか、または現在のユーザーにそのオブジェクトに対するアクセス許可がないことを示します。

これはアクセス許可とは関係ありません。

助けてもらえますか?

+0

このストアドプロシージャでGRANT EXECを試してみましたが、これは役に立ちませんか? – sll

+0

Print @sql_strの値を受け取り、正常に実行できますか? – JeffO

+0

このエラーはありません – Anirudh

答えて

0

openqueryクエリからexecを削除してみます。プロシージャ名/パラメータを渡すことができるはずです。

​​
+0

試してみましたが、同じエラーを投げる:( – Anirudh

関連する問題