2011-07-25 198 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
無法處理對象「執行[Tfs_VMT 收藏] .dbo.MergeCandidate「$ \ VMT \ Versions \ 0900 \ AMS \', '$ \ VMT \ Versions \ 0900 \ Base \'「。 鏈接服務器「ODSSERVER」的OLE DB提供程序「SQLNCLI10」指示對象沒有 列或當前用戶沒有該對象的權限。

我檢查了這與權限無關。

你能幫忙嗎?

+0

因此,您嘗試使用GRANT EXEC存儲過程,這不會有幫助嗎? – sll

+0

您可以取得Print @sql_str的值併成功運行它嗎? – JeffO

+0

沒有它給出了相同的錯誤 – Anirudh

回答

0

嘗試從您的openquery查詢中刪除exec。您應該只能傳入過程名稱/參數。

​​
+0

嘗試過但它拋出相同的錯誤:( – Anirudh

相關問題