错误Microsoft分布式事务处理协调器MS DTC已取消分布式事务

问题描述

我们的应用程序使用C#、. NET Framework 4.51和sql Server 2012。

在大多数情况下,以下代码成功运行,但是随机返回错误

The Microsoft distributed Transaction Coordinator (MS DTC) has cancelled the distributed transaction.

代码

using (TransactionScope scope = new TransactionScope())
            {
                DbConnection conn = db.CreateConnection();
                conn.open();

                foreach (ArchiveJobInfo archinfo in Archives)
                {
                    using (sqlCommand cmd = GetCommandProc(db,archinfo.StoredprocName,archinfo.JobUtilID,JobParm.BatchId))
                    {
                        cmd.CommandTimeout = 0; 
                        cmd.Connection = (sqlConnection)conn;
                        Int32 returnValue = db.ExecuteNonQuery(cmd);
                    }
                }
                scope.Complete();
            }

存储过程代码具有许多在不同表中的DELETE和INSERT INTO。

这些是存储过程中的一些代码

begin transaction
INSERT INTO myTable (col1,col2,...) SELECT (col1,...) FROM anotherTable WHERE myDate < DATEADD(Day,-1825,getdate())
select @error=@@error
if @error <> 0
begin
    select @text= @text+ 'my text'
    rollback transaction
    raiserror (@text,-1,30001)
    return 1
end

commit transaction

是什么原因导致错误“ Microsoft分布式事务处理协调器(MS DTC)已取消分布式事务处理”,我该如何解决

我们不使用链接服务器。

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...