【问题标题】:TransactionAbortedException: The transaction has aborted. ---> System.TimeoutException: Transaction TimeoutTransactionAbortedException:事务已中止。 ---> System.TimeoutException:事务超时
【发布时间】:2019-12-22 06:37:10
【问题描述】:

我的 .net 应用程序出现以下错误。

>System.Transactions.TransactionAbortedException: The transaction has aborted. ---> System.TimeoutException: Transaction Timeout
   --- End of inner exception stack trace ---
   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()

我在论坛中查看了类似的问题,大部分回复/答案是增加/设置一个大于默认超时的超时时间。 这有助于处理一些缓慢的事务/数据库操作。

增加超时时间并不能真正帮助找出确切的问题,对吧?

我注意到支持此应用程序的 SQL 服务器中没有记录任何错误。用户在此应用程序中执行大量读取操作。由于我没有看到任何查询超时的 SQL Server 日志,因此我认为它与 SQL Server 无关。

用户通过网络连接。如果是表锁错误,我想我会得到一个错误号,严重程度也在 SQL 服务器日志中,我相信。另外我有扩展的事件会话运行以捕获所有sql server 错误,我在那里看不到这个错误。让我感到困惑的是,这是一个 sql 错误或一些应用程序代码问题。

如何找出根本原因?

【问题讨论】:

    标签: .net sql-server exception timeout


    【解决方案1】:

    检查 sql server 日志中是否有断开的会话。你是通过网络连接的吗? 当其他复杂查询锁定您尝试更新的表时,其他问题可能是锁定表。

    【讨论】:

    • 是的,用户是通过网络连接的。如果是表锁错误,我想我会得到一个错误号,严重程度也在 SQL 服务器日志中,我相信。我也有扩展事件会话运行以捕获所有 sql server 错误,但我没有在其中看到此错误。令我困惑的是,这是 sql 错误或某些应用程序代码问题。
    【解决方案2】:

    不确定这是否会对您有所帮助。

    这发生在我身上一次,按计划每 5 分钟运行一年左右的查询突然开始超时。问题是有很多人使用 Dbeaver、teradata sql 助手和其他 IDE 等助手打开连接。联系数据库管理员删除他们的连接,它又开始工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多