我正在调用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”指示对象没有 列或当前用户没有该对象的权限。
我检查了这与权限无关。
你能帮忙吗?
因此,您尝试使用GRANT EXEC存储过程,这不会有帮助吗? – sll
您可以取得Print @sql_str的值并成功运行它吗? – JeffO
没有它给出了相同的错误 – Anirudh