【问题标题】:"Timeout expired" exception happens before the defined timeout“超时已过期”异常发生在定义的超时之前
【发布时间】:2013-03-30 01:55:26
【问题描述】:

使用 ADO.NET 和 SQL Server 2008。

SqlCommand 的CommandTimeout 属性没有改变,所以它的默认值为30。

应用程序运行几十个命令并将结果(或异常)记录到 SQL 表中,因此我知道每次执行的开始时间。下一条日志记录的开始时间为我提供了持续时间的估计值。

我得到了两个没有意义的异常,因为它们的持续时间远小于定义的CommandTimeout

这是随机发生的。无法重现。

Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.

我的问题是:除了实际超时之外,这个异常是否可以由其他原因引发?

【问题讨论】:

  • 有两种超时,一种在连接级别,一种在命令级别。什么是连接超时?通常它是在连接字符串上定义的。
  • @rsbarro:我知道这一点。连接 TimeOut 为 15 - 这仍然无法解释此行为,异常发生在上一个命令后 2 到 5 秒。
  • 您是否在存储过程查询中处理 XML?
  • 您能否通过执行存储过程来检查 SQL Server 并告诉我们需要多少时间?如果花费的时间比平时长,您应该微调您的存储过程。

标签: sql-server exception ado.net


【解决方案1】:

这可能与参与表中的某些锁定有关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-15
    • 2020-01-07
    • 2019-03-06
    • 2016-02-29
    • 1970-01-01
    • 2012-10-06
    • 2018-02-08
    • 1970-01-01
    相关资源
    最近更新 更多