Выполнение удаленной процедуры с пользовательским параметром переменной табличного типа

Я пытаюсь вызвать удаленную хранимую процедуру через связанный сервер. Проблема в том, что одним из обязательных параметров является определяемая пользователем таблица типов.

Я не могу понять, как объявить локальную переменную как определяемый пользователем тип таблицы с удаленного сервера.

Это то, что я пытаюсь до сих пор, но это не работает:

DECLARE @tblVar [REMOTESERVER].REMOTEDB.dbo.user_defined_table_type

EXEC [REMOTESERVER].REMOTEDB.dbo.procedure_name (@param1 = @tblVar)

Однако ошибка, которую я получаю:

Имя типа REMOTESERVER.REMOTEDB.dbo содержит больше префиксов, чем максимальное количество. Максимум 1.

Необходимо объявить скалярную переменную @tblVar


person Levi W    schedule 04.10.2012    source источник


Ответы (1)


После дальнейших исследований я обнаружил, что табличные переменные недействительны для удаленных вызовов процедур.

Вместо этого то, что я сделал, называлось EXEC [REMOTESERVER].[REMOTEDB]..sp_executesql, объявляло и заполняло мою табличную переменную и вызывало хранимую процедуру внутри этого.

Пример:

DECLARE @SQL nvarchar(4000)
SET @SQL = N'
DECLARE @tblVar dbo.user_defined_table_type
-- Code to populate table here
EXEC dbo.procedure_name (@param1 = @tblVar)
'
EXEC [REMOTESERVER].[REMOTEDB]..sp_executesql @stmt = @SQL

И это решило мою проблему. Надеюсь, это поможет кому-то еще в будущем.

person Levi W    schedule 04.10.2012
comment
Спасибо за ответ на свой вопрос! - person Andrew; 16.07.2021