2

我在WinForm应用程序使用C#4.0中,后端SQL Server 2012的 工作一段时间后,我的软件似乎挂起,因为查询进入等待状态,因为 一个查询在暂停模式下的活动监视器中显示, 此挂起的查询多次成功运行,但发生此问题一段时间。为什么查询显示在暂停任务状态和LCK_M_X等待类型

活动监视器显示:

任务状态:已暂停

命令:更新

应用:.NET SqlClient数据提供程序

等待时间:5673610 ......(无限)

等待类型:LCK_M_X

等待资源:keylock hobtid = 72057594058768384 dbid = 14 id = lock2dbc30880 mode = X associatedObjectId = 72057594058768384

查询状态暂停的原因是什么?

我该如何阻止它被暂停?

回答

0

LCK_M_X指示查询正在等待获取某处的排他锁。尝试使用相同的数据库对象检查其他应用程序或线程,以查看是否存在争用条件或未自行清理的进程。

也许你的代码中有另一个db调用或嵌套的proc调用?

尝试使用Sql Profiler来识别锁定请求来自哪里 - 这个可能帮助,但很难说不知道更多。

select * from sys.dm_tran_locks 

HTH