sql-server - 为什么查询显示为挂起任务状态和 LCK_M_X 等待类型

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

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

事件监视器显示:

任务状态:暂停

命令:更新

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

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

等待类型:LCK_M_X

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

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

我怎样才能阻止它被暂停?

最佳答案

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

也许您的代码中某处存在另一个 db 调用或嵌套 proc 调用?

尝试使用 Sql Profiler 来确定锁定请求的来源 - 这可能有帮助,但如果不了解更多信息就很难说。

select * from sys.dm_tran_locks

HTH

关于sql-server - 为什么查询显示为挂起任务状态和 LCK_M_X 等待类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16196521/

相关文章:

sql - 从 select 语句中的 SUM 返回前 5 个

sql - 如何基于数据库角色构建资源调控器分类器功能?

sql-server - 服务器端只进游标中断@@IDENTITY

sql-server - SQL Server - 单个过程与单个过程

installation - 将/SECURITYMODE设置为混合模式以用于SQL Server 2012安装

sql - 是否执行SQL View 中未选择的列?

sql - 如何在现有表上创建查询并构建具有聚合数据和限制的表( View )?

java - 使用 jTDS 连接到 SQL Server 2012 可用性组监听器

php - 提高复杂 SQL 查询的性能

mysql - SQL 内连接 - 性能改进