欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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') ......
  • 如下图所示,对数据库表的操作查询和数据删除一直在运行中,无法返回结果。
  • 对表直接删除,发生:“已超过了锁请求超时时段。”
    sqlServer数据库表无法查询,无法删除。“表发生死锁”。“已超过了锁请求超时时段。”

分析解决

  • 查询进程和表被锁住情况
SELECT request_session_id spid,OBJECT_NAME
(resource_associated_entity_id)tableName 
FROM sys.dm_tran_locks 
WHERE resource_type='OBJECT';

参考来源dm_tran_locks

sqlServer数据库表无法查询,无法删除。“表发生死锁”。“已超过了锁请求超时时段。”

  • 杀死进程
exec ('Kill 80') 
  • 查询所有锁
exec sp_lock;
-- 查询指定进程的锁
exec sp_lock 55;

sqlServer数据库表无法查询,无法删除。“表发生死锁”。“已超过了锁请求超时时段。”
Type值(锁的类型):
RID = 表中单个行的锁,由行标识符 (RID) 标识。
KEY = 索引内保护可串行事务中一系列键的锁。
PAG = 数据页或索引页的锁。
EXT = 对某区的锁。
TAB = 整个表(包括所有数据和索引)的锁。
DB = 数据库的锁。
FIL = 数据库文件的锁。
APP = 指定的应用程序资源的锁。
MD = 元数据或目录信息的锁。
HBT = 堆或 B 树(HoBT)上的锁。 在 SQL Server 中此信息不完整。
AU = 分配单元的锁。 在 SQL Server 中此信息不完整。
参考来源sp_lock

声明:参考博客

锁表原因

  • 表不存在,往表中插入数据,报错导致意外中止,事务没有进行提交处理。
    sqlServer数据库表无法查询,无法删除。“表发生死锁”。“已超过了锁请求超时时段。”
    sqlServer数据库表无法查询,无法删除。“表发生死锁”。“已超过了锁请求超时时段。”

本文地址:https://blog.csdn.net/qq_36135928/article/details/107389303