编程语言
首页 > 编程语言> > HRESULT:使用TransactionScope的0x8004D00E-C#

HRESULT:使用TransactionScope的0x8004D00E-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: The transaction has already
been implicitly or explicitly
committed or aborted.

Inner Exception: The transaction has
already been implicitly or explicitly
committed or aborted (Exception from
HRESULT: 0x8004D00E)

谁知道是什么原因可能导致此问题?

解决方法:

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

另外,请检查安全性配置是否正确(通过允许匿名参与DTC事务进行检查),以及防火墙是否允许DTC通过它.

查看此论坛常见问题解答:Distributed Transaction Coordinator(MSDTC) and Transaction FAQ

[与这个特殊问题有关:Distributed Transaction Coordinator]

标签:sql-server-2005,sql-server-2000,transactionscope,c,net
来源: https://codeday.me/bug/20191107/2004025.html