当我尝试在连接到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();
}
错误讯息:
例外:交易已经
被隐式或显式地
提交或中止。
内部例外:交易具有
已经被隐式或显式地
已提交或中止(来自的异常
结果:0x8004D00E)
谁知道是什么原因可能导致此问题?
最佳答案
检查是否在运行代码的计算机上启动了DTC。由于您在transactionscope中使用2个连接,因此该事务将被提升为基于DTC的事务。
另外,请检查安全性配置是否正确(通过允许匿名参与DTC事务进行检查),以及防火墙是否允许DTC通过它。
查看此论坛常见问题解答:Distributed Transaction Coordinator(MSDTC) and Transaction FAQ
[与此SO问题有关:Distributed Transaction Coordinator]