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

在这里插入图片描述

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

声明:参考博客

锁表原因

  • 表不存在,往表中插入数据,报错导致意外中止,事务没有进行提交处理。
    在这里插入图片描述
    在这里插入图片描述
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值