c# - 交易已中止

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

我有一个多线程 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/

相关文章:

sql-server - Entity Framework 7 无法插入日期时间

c# - DELETE 命令超时

c# - 用于从 ASP.NET C#(服务器端)中的 HTML 元素中删除 onclick =""属性的正则表达式

c# - 如何检查现有记录

c# - 使用 WIF 在 Asp.Net 4.5 上自定义身份验证

c# - 有没有办法暂停所有 Threading.Timer 计时器?

c# - 单元测试作业组件 C#

c# - 登录应用程序的问题

.net - Socket.Poll 在不同机器上的延迟差异很大

sql - INSERT <table> (x) VALUES (@x) WHERE NOT EXISTS ( SELECT * FROM <table> WHERE x = @x) 会导致重复吗?