我正在使用C#4.0,后端SQL SERVER 2012开发winform应用程序。 有一段时间,我的软件似乎挂了,因为查询变得等待,因为 一个查询以暂停模式显示在活动监视器中, 此暂停查询已成功运行几次,但有时会出现此问题。
活动监视器显示:
任务状态:暂停
命令:更新
应用程序:.net SqlClient数据提供程序
等待时间:5673610 .....(无限制)
等待类型:LCK_M_X
等待资源:keylock hobtid = 72057594058768384 dbid = 14 id = lock2dbc30880 mode = X associatedObjectId = 72057594058768384
查询状态被暂停的原因是什么。
我怎么能阻止它被暂停?
答案 0 :(得分:0)
LCK_M_X
表示查询正在等待获取某处的独占锁。尝试使用相同的数据库对象检查其他应用程序或线程,以查看是否存在竞争条件或无法自行清理的进程。
也许在你的代码中有另一个db调用或嵌套proc调用?
尝试使用Sql Profiler来识别锁定请求的来源 - 这个可能有帮助,但在不知道更多的情况下很难说。
select * from sys.dm_tran_locks
HTH