c# - 结果 : 0x8004D00E using TransactionScope - C#

标签 c# .net sql-server-2005 sql-server-2000 transactionscope

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

代码包含在 TransactionScope block 中:

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。由于您在事务范围内使用 2 个连接,事务将被提升为基于 DTC 的事务。

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

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

[与这个 SO 问题相关:Distributed Transaction Coordinator ]

关于c# - 结果 : 0x8004D00E using TransactionScope - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/784047/

相关文章:

c# - 通过 Jquery 的 ascx anchor 标记打开 Aspx 时不触发 PageLoad 事件

c# - 支持新 CSS3 功能的自定义 Web 浏览器控件

c# - 在 C# 中,如何使用另一个列表的 StartsWith() 条件筛选列表?

C# 优化和副作用

javascript - jQuery .html() 用 html/javascript 代码填充一个 div

c# - 单元测试下恢复SQL Server时避免恢复卡住

c# - 导出没有私钥的 X.509 证书

.net - 检测接口(interface)泛型类型参数的差异

sql - 如何在 SQL Server 2005 中查找表中多列的总和?

c# - Windows 身份验证到 Sql Server 身份验证