Вызов параметризованной хранимой процедуры в OpenQuery - SQL Server 2008 - PullRequest
1 голос
/ 25 июля 2011

Я вызываю хранимую процедуру в OpenQuery и передаю параметры хранимой процедуре.

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+ ''' , ''' +@Tgt+''' ' 
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 "для связанный сервер «ODSSERVER» указывает, что либо объект не имеет столбцы или текущий пользователь не имеет разрешения для этого объекта.

Я проверил, что это не имеет никакого отношения к разрешениям.

Не могли бы вы помочь?

1 Ответ

0 голосов
/ 25 июля 2011

Попробуйте удалить exec из вашего запроса openquery.Вы должны иметь возможность просто передать имя / параметры процедуры.

set @sql_str = '[Tfs_VMT Collection].dbo.MergeCandidate ''' + @Src+ ''' , ''' +@Tgt+''' ' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...