Ошибка хранимой процедуры на связанном сервере - PullRequest
3 голосов
/ 06 апреля 2011

Я установил хранимую процедуру для обновления базы данных на моем связанном сервере

CREATE procedure MyProcedure
@myfield varchar(50),
@mycolumn varchar(10)

AS

UPDATE MyDB
SET myfield = @myfield
WHERE mycolumn = @mycolumn
GO

И затем выполняю ее следующим образом

exec linkedDB...MyProcedure @myfield = '0', @mycolumn = '12345'

Но я продолжаю получать эту ошибку

Не удалось настроить параметр для удаленного сервера 'connectedDB'

Я выполнил поиск в Интернете, но, похоже, ничего не получается

ОБНОВЛЕНИЕ

Вот то, что я пытаюсь сейчас

EXEC ('MyProcedure (?,?)', '0', '12345') AT [linkedDB]

Кажется, сейчас дает мне эту ошибку

Неверный синтаксис рядом с ','

Я использую OLE DB с SQL Server 2000

ОБНОВЛЕНИЕ

Также пробовал это

exec linkedDB...MyProcedure '0', '12345' 

И теперь я получаю эту ошибку

Синтаксическая ошибка или нарушение прав доступа "parse error near ';'"

1 Ответ

0 голосов
/ 06 апреля 2011

Чтобы разрешить использование параметров, я думаю, вам нужно активировать параметр Динамический параметр в свойствах вашего поставщика связанных серверов : их можно найти в студии управления Sql Server в разделе Объекты сервера / СвязанныеСерверы / Провайдеры / Щелкните правой кнопкой мыши Свойства требуемых провайдеров

Динамический параметр

Указывает, что провайдер разрешает «?»синтаксис маркера параметра для параметризованных запросов.Установите эту опцию, только если поставщик поддерживает интерфейс ICommandWithParameters и поддерживает «?»в качестве маркера параметра.Установка этого параметра позволяет SQL Server выполнять параметризованные запросы к поставщику.Возможность выполнения параметризованных запросов к поставщику может привести к повышению производительности для определенных запросов.

РЕДАКТИРОВАТЬ Из комментария:

Для OLEDB маркер параметра равен ? (знак вопроса) без имени.Вы должны попытаться вызвать хранимую процедуру с таким синтаксисом:

EXEC ('exec MyProcedure ?, ?', @parVal1, @parVal2) AT [LINKED SERVER]
...