【发布时间】:2015-01-10 17:30:59
【问题描述】:
我有一个调用存储过程的触发器。在存储过程中有一个链接服务器上的 INSERT 语句,它给了我:
The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "MyServer" was unable to begin a distributed transaction.
但是当我用实际值替换 sql 字符串中的变量值并手动运行完全相同的语句(即不通过触发器)时,它会插入记录。
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
【问题讨论】:
标签: tsql triggers linked-server msdtc