【发布时间】: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