当前位置: 移动技术网 > IT编程>数据库>MSSQL > sqlServer数据库表无法查询,无法删除。“表发生死锁”。“已超过了锁请求超时时段。”

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

2020年07月18日  | 移动技术网IT编程  | 我要评论
  • 如下图所示,对数据库表的操作查询和数据删除一直在运行中,无法返回结果。
  • 对表直接删除,发生:“已超过了锁请求超时时段。”
    在这里插入图片描述

分析解决

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

参考来源dm_tran_locks

在这里插入图片描述

  • 杀死进程
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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网