链接服务器无法在触发器中启动分布式事务

时间:2014-11-13 14:25:40

标签: tsql triggers linked-server msdtc

我有一个调用存储过程的触发器。在存储过程中,链接服务器上有一个INSERT语句,它给了我:

The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "MyServer" was unable to begin a distributed transaction.

但是当我用实际值替换sql字符串中的变量值并且我手动运行完全相同的语句(即不通过Trigger)时,它会插入记录。

已启用DTC。我的DTC设置有误吗?

正在执行的查询:

INSERT INTO [MyServer].WorkForce.dbo.Faults (FaultID, CreatedOn, FaultStart, Reason, Description,  TaskID)
SELECT @NewFaultID, GETDATE(), T.CreatedOn, ISNULL(I.Reason, 'Unknown'), WFR.Description,
       T.TaskID
FROM Inserted I 
     INNER JOIN Tasks T ON I.TaskID = T.TaskID
     INNER JOIN FaultReasons WFR ON I.Reason = WFR.Reason
WHERE T.TaskID = I.TaskID

我正在使用SQL Server 2012

2 个答案:

答案 0 :(得分:1)

我发布得太快,找到了答案,是的DTC设置错了。我启用了“允许入站”,“允许出站”和“无需身份验证”,现在可以正常运行。

答案 1 :(得分:1)

- 修正: EXEC master.dbo.sp_serveroption @ server = N' SVRLINK',@ optname = N'远程proc交易促销',@ optvalue = N' false'