【问题标题】:Timeout expired during select request using NHibernate使用 NHibernate 的选择请求期间超时已过期
【发布时间】:2015-10-03 04:46:55
【问题描述】:

我在我的项目中使用 NHibernate。有时对不同表的一些不同请求会失败,GenericADOException 包含在 SqlException: Timeout expired.

示例(ObjectId 上有索引)

NHibernate.Exceptions.GenericADOException:无法执行查询 [ 选择 user_15f5e0_.Id 作为 col_0_0_,user_15f5e0_.ObjectId 作为 col_1_0_, user_15f5e0_.TypeName 为 col_2_0_,user_15f5e0_.VulnerabilityLevel 为 col_3_0_, user_15f5e0_.DisplayName as col_4_0_, user_15f5e0_.UserName 作为 col_5_0_ 来自 [User] user_15f5e0_ 其中 user_15f5e0_.ObjectId 在 (@p0、@p1、@p2、@p3、@p4、@p5)]

--> System.Data.SqlClient.SqlException: 超时。操作完成前超时时间已过,或服务器处于 没有反应。

---> System.ComponentModel.Win32Exception: 等待操作超时

这只是通过 WebApi 的一个请求,在其他线程中没有不同的活动。根据日志,没有打开的交易。我认为主要原因是没有提交事务,但是这些异常在没有任何“写入”活动的情况下发生不确定。

谁能解释这个错误的主要原因是什么?

【问题讨论】:

  • 需要多长时间,为什么您预计该持续时间会过长?您提到“日志”,但这些只是来自该程序,还是可能有其他应用程序使用数据库?
  • @OskarBerggren 此行为无限期开始,直到应用程序重新启动。此外,有时请求可以在没有任何错误的情况下执行。是的,此日志来自一项服务。我的意思是“日志”作为一个日志文件中的许多项目。数据库始终由一个应用程序的一个实例使用
  • @lomomike 你有什么发现吗?我每隔一段时间就会面临同样的行为。
  • @LuizHenriqueMartinsLinsRol 不幸的是没有。这是一个非常严重的问题,很少再生。
  • 有人解决了吗?我遇到了同样的问题,它随机触发。

标签: .net sql-server nhibernate timeout


【解决方案1】:

如果有帮助:

对我来说,事实证明这是一个与未正确关闭事务有关的问题(未调用 Dispose,也未通过“使用”块关闭)。

【讨论】:

    猜你喜欢
    • 2019-11-21
    • 2013-03-08
    • 2018-11-30
    • 2018-03-17
    • 1970-01-01
    • 2011-10-13
    • 2011-03-29
    • 2015-02-10
    • 1970-01-01
    相关资源
    最近更新 更多