链接服务器存储过程错误

时间:2011-04-06 10:39:13

标签: sql-server stored-procedures oledb linked-server

我已设置存储过程来更新链接服务器上的数据库

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'

但我一直收到这个错误

  

无法为远程服务器'linkedDB'

设置参数

我已经在网上搜索了它,但它似乎没有提出任何东西

更新

这是我现在正在尝试的

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

现在似乎在给我这个错误

  

','

附近的语法不正确

我正在使用带有SQL Server 2000的OLE DB

更新

也尝试了这个

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

我现在收到此错误

  

语法错误或访问冲突“在';'附近解析错误”

1 个答案:

答案 0 :(得分:0)

要允许参数我认为您必须激活linked server provider properties中的动态参数选项: 您可以在Sql Server管理工作室中找到它们,在服务器对象/链接服务器/提供程序/右键单击所需提供程序上的属性

  

动态参数

     

表示提供商允许“?”参数标记语法   参数化查询。设置此选项   只有提供者支持   ICommandWithParameters接口和   支持'?'作为参数   标记。设置此选项允许SQL   服务器执行参数化   对提供者的查询。该   执行参数化的能力   对提供者的查询可以   导致更好的性能   某些疑问。

来自评论的编辑:

对于OLEDB,参数标记是(问号),没有任何名称。 你应该试着用这种sintax来调用存储过程:

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