sqlServer数据库表无法查询,无法删除。“表发生死锁”。“已超过了锁请求超时时段。”
程序员文章站
2022-06-26 13:46:34
如下图所示,对数据库表的操作查询和数据删除一直在运行中,无法返回结果。对表直接删除,发生:“已超过了锁请求超时时段。”分析解决查询进程和表被锁住情况SELECT request_session_id spid,OBJECT_NAME(resource_associated_entity_id)tableName FROM sys.dm_tran_locks WHERE resource_type='OBJECT';杀死进程exec ('Kill 80') ......
- 如下图所示,对数据库表的操作查询和数据删除一直在运行中,无法返回结果。
- 对表直接删除,发生:“已超过了锁请求超时时段。”
分析解决
- 查询进程和表被锁住情况
SELECT request_session_id spid,OBJECT_NAME
(resource_associated_entity_id)tableName
FROM sys.dm_tran_locks
WHERE resource_type='OBJECT';
- 杀死进程
exec ('Kill 80')
- 查询所有锁
exec sp_lock;
-- 查询指定进程的锁
exec sp_lock 55;
Type值(锁的类型):
RID = 表中单个行的锁,由行标识符 (RID) 标识。
KEY = 索引内保护可串行事务中一系列键的锁。
PAG = 数据页或索引页的锁。
EXT = 对某区的锁。
TAB = 整个表(包括所有数据和索引)的锁。
DB = 数据库的锁。
FIL = 数据库文件的锁。
APP = 指定的应用程序资源的锁。
MD = 元数据或目录信息的锁。
HBT = 堆或 B 树(HoBT)上的锁。 在 SQL Server 中此信息不完整。
AU = 分配单元的锁。 在 SQL Server 中此信息不完整。
参考来源sp_lock
声明:参考博客
锁表原因
- 表不存在,往表中插入数据,报错导致意外中止,事务没有进行提交处理。
本文地址:https://blog.csdn.net/qq_36135928/article/details/107389303
上一篇: 史上最雷人的面试
下一篇: 记一次新建操作(insert)的优化过程