我已设置存储过程来更新链接服务器上的数据库
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'
我现在收到此错误
语法错误或访问冲突“在';'附近解析错误”
答案 0 :(得分:0)
要允许参数我认为您必须激活linked server provider properties中的动态参数选项: 您可以在Sql Server管理工作室中找到它们,在服务器对象/链接服务器/提供程序/右键单击所需提供程序上的属性
动态参数
表示提供商允许“?”参数标记语法 参数化查询。设置此选项 只有提供者支持 ICommandWithParameters接口和 支持'?'作为参数 标记。设置此选项允许SQL 服务器执行参数化 对提供者的查询。该 执行参数化的能力 对提供者的查询可以 导致更好的性能 某些疑问。
来自评论的编辑:
对于OLEDB,参数标记是?(问号),没有任何名称。 你应该试着用这种sintax来调用存储过程:
EXEC ('exec MyProcedure ?, ?', @parVal1, @parVal2) AT [LINKED SERVER]