HRESULT:0x8004D00E使用TransactionScope – C#

当我尝试在连接到SQL Server 2000的Windows Server 2003 Standard Edition SP1计算机上运行C#WinForms应用程序时,我收到以下错误,转换WinForms应用程序中的数据并将转换后的数据插入到SQL Server 2005应用程序中。 我使用SSPI连接到每个数据库。

代码包含在TransactionScope块中:

System.TimeSpan TransactionTimeOut = new TimeSpan(0, 40, 0); using(TransactionScope Scope = new TransactionScope(TransactionScopeOption.RequiresNew, TransactionTimeOut)) { try { //meat of transaction... } catch(Exception ex) { throw ex; } Scope.Complete(); } 

错误消息:

例外:事务已被隐式或显式提交或中止。

内部exception:事务已被隐式或显式提交或中止(HRESULTexception:0x8004D00E)

任何人都知道可能导致此问题的原因是什么?

检查DTC是否在运行代码的计算机上启动。 由于您在transactioncope中使用了2个连接,因此该事务将被提升为基于DTC的事务。

另外,检查安全性是否正确配置(通过允许匿名参与DTC事务来检查),并且防火墙允许DTC通过它。

查看此论坛常见问题: 分布式事务处理协调器(MSDTC)和事务常见问题解答

[与此SO问题相关: 分布式事务处理协调器 ]

这个过程需要多长时间? 如果您达到超时(不太可能超时40分钟,但仍然可能),您可能会收到该错误消息。

否则,你收到例外吗? 抛出exception之前发生了什么?