代码之家  ›  专栏  ›  技术社区  ›  Dan

事务已中止

  •  5
  • Dan  · 技术社区  · 15 年前

    下面是stacktrace:

    在 System.Transactions.TransactionStates已中止.BeginCommit(内部事务) tx、Boolean asyncCommit、AsyncCallback asyncCallback,Object asyncState)位于 System.Transactions.CommittableTransaction.Commit() 在 System.Transactions.TransactionScope范围.InternalDispose() 在 在MyNamespace.CallingMethod方法()

    环境: 连接到SQLServer2005

    你知道为什么会这样吗? 谢谢!

    5 回复  |  直到 15 年前
        1
  •  1
  •   Andreas Paulsson    15 年前

    此调用堆栈是否来自最内部的InnerException?如果你得到这个异常,通常(不总是)会有一个InnerException提供更多信息。

        2
  •  1
  •   Russel Yang    15 年前

    你可以创建一个内存转储,指令可以在这里找到 http://blogs.msdn.com/b/joncole/archive/2007/03/29/creating-a-process-memory-dump.aspx

    然后您可以检查windbg,以揭示是什么根异常导致了这个问题。关于如何使用windbg检查托管异常,有很多有用的信息。

    同时,您可以使用sql profiler来监视在抛出异常时是否发生了任何sql错误。

        3
  •  1
  •   Dan    15 年前

    我认为这是由于网络不稳定造成的。这种情况很少发生,而且已经有好几个月没有长出它丑陋的脑袋了。

        4
  •  1
  •   RononDex    12 年前

    如果你们中有人面临这个问题,请注意,我设法找到了解决办法和问题。。在app config文件中,缺少连接字符串的一个属性,即“Enlist”,。

    之前连接字符串是= <add name="HIS_Test_12" connectionString="server=OXYGEN\SQL2008ENT;database=CHIS_VN_12;UID=sa;Password=1234;Max Pool Size=100;Connect Timeout=200;" providerName="System.Data.SqlClient" />

    现在更新的连接字符串是= <add name="HIS_Test_12" connectionString="server=OXYGEN\SQL2008ENT;database=CHIS_VN_12;UID=sa;Password=1234;Max Pool Size=100;Connect Timeout=200;Enlist=False;" providerName="System.Data.SqlClient" />

        5
  •  0
  •   Robert Wagner    15 年前

    正如安德烈亚斯所说,看看内部的例外。还要连接SQL Profiler并查找任何死锁/终止。

    推荐文章