我想通过链接服务器更新行。我使用this指令在本地SQL-Server上创建了链接服务器。
我可以使用以下代码更新查询分析器上的行。未成功返回错误并且已在Linked Server上更新行。
UPDATE [LinkedServer].[Database].[dbo].[Table]
SET A = 'A', B = 'B'
WHERE id = 1
但是当我在本地sql server上为我的表创建更新触发器时,如下所示
ALTER TRIGGER [TriggerLocalServerTable]
ON dbo.[LocalServerTable]
FOR UPDATE
AS
DECLARE @A varchar(4)
DECLARE @B varchar(4)
DECLARE @id int
BEGIN
SELECT
@A = A,
@B = B,
@id = id
FROM inserted
UPDATE [LinkedServer].[Database].[dbo].[Table]
SET A = @A, B = @B
WHERE id = @id
END
执行触发时,返回如下所示的错误
OLE DB提供程序“SQLNCLI”用于链接 服务器“LinkedServer”返回消息 “合伙人交易经理有 禁用它的支持 远程/网络交易。“。消息 7391,第16级,状态2,程序 TriggerLocalServerTable,第45行 无法执行此操作 因为OLE DB提供程序“SQLNCLI” 链接服务器“LinkedServer”无法使用 开始分布式交易。
我将this指令应用于本地服务器以解决问题,任何更改。
更多细节;
你有任何想法解决这个问题。 非常感谢你。
修改 我解决了这个问题。首先,我在[TriggerLocalServerTable]上创建了更新触发器。此触发器的作业是将新的更新字段插入到本地表中。此新表用于更新临时数据。然后我创建了一个每小时运行一次的作业,用于在LinkedServer上更新文件。此作业从临时表中获取数据,然后更新到LinkedServer表的字段。
问候,Kerberos。
答案 0 :(得分:1)
您是否在Windows Server上安装了分布式事务处理协调器?如果您的更新在事务中,那么没有它就无法工作。 看到 link text
答案 1 :(得分:0)
问题不在于SQL Server,而在于ODBC驱动程序。
解决问题:)