为什么查询显示在挂起的任务状态和LCK_M_X等待类型

时间:2013-04-24 15:48:53

标签: sql-server sql-server-2012 sqlperformance activity-monitor

我正在使用C#4.0,后端SQL SERVER 2012开发winform应用程序。 有一段时间,我的软件似乎挂了,因为查询变得等待,因为 一个查询以暂停模式显示在活动监视器中, 此暂停查询已成功运行几次,但有时会出现此问题。

活动监视器显示:

任务状态:暂停

命令:更新

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

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

等待类型:LCK_M_X

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

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

我怎么能阻止它被暂停?

1 个答案:

答案 0 :(得分:0)

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

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

尝试使用Sql Profiler来识别锁定请求的来源 - 这个可能有帮助,但在不知道更多的情况下很难说。

select * from sys.dm_tran_locks

HTH