我有一个多线程的C#应用程序,其中每个线程都有自己的一组数据库连接。每个线程使用TransactionScope/DTC。有时候,我会遇到“交易已中止”异常。它不是从超时开始的,因为它在发生事务后不到2秒内发生。交易已中止
这里的堆栈跟踪:
在 System.Transactions.TransactionStateAborted.BeginCommit(InternalTransaction TX,布尔asyncCommit,AsyncCallback的 的AsyncCallback,对象asyncState)在 System.Transactions.CommittableTransaction.Commit() 在 System.Transactions.TransactionScope.InternalDispose() 在 System.Transactions.TransactionScope.Dispose() 在MyNamespace.CallingMethod()
这种情况非常罕见,例如在100,000次交易中就发生过一次。
环境: Windows Server 2003的 NET 2.0 连接到SqlServer的2005
为什么这是发生任何想法? 谢谢!
讲解SQL,DTC,或OS错误日志有任何其他细节? – StingyJack 2010-08-27 15:48:27
具有该时间戳的事件日志中的任何条目? – 2010-08-27 15:50:37
生产箱,所以很难在没有繁文get节的情况下获得任何信息。我会看看是否可以从事件日志中获取任何内容,这很容易。谢谢! – Dan 2010-08-27 15:59:58