3

当我尝试在连接到 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();
    }

错误信息:

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

内部异常:事务已被隐式或显式提交或中止(来自 HRESULT 的异常:0x8004D00E)

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

4

2 回答 2

5

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

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

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

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

于 2009-04-24T00:10:27.697 回答
0

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

否则,您是否收到异常?在抛出异常之前发生了什么?

于 2009-04-24T00:05:57.973 回答