我有一个多线程 C# 应用程序,其中每个线程都有自己的一组数据库连接。每个线程都使用 TransactionScope/DTC。有时,我会收到“交易已中止”的异常。这不是超时,因为它发生在事务开始后不到 2 秒的时间内。
这是堆栈跟踪:
at System.Transactions.TransactionStateAborted.BeginCommit(InternalTransaction tx, Boolean asyncCommit, AsyncCallback asyncCallback, Object asyncState) at System.Transactions.CommittableTransaction.Commit() at System.Transactions.TransactionScope.InternalDispose() at System.Transactions.TransactionScope.Dispose() at MyNamespace.CallingMethod()
这种情况很少发生,比如每 100,000 笔交易中就有一次。
环境: window 服务器 2003 .Net 2.0 连接到 SqlServer 2005
关于为什么会发生这种情况的任何想法? 谢谢!
最佳答案
这个调用堆栈是来自您最内部的 InnerException 吗?如果您遇到此异常,通常(尽管并不总是)有一个包含更多信息的 InnerException。
我的赌注是数据库死锁。
关于c# - 交易已中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3585876/