Sqlserver之死锁查询以及批量解锁的实现方法

2023-12-01 0 885
目录

Sqlserver死锁查询以及批量解锁方法

Sqlserver死锁查询以及解锁方法

(1)下面是查询死锁进程

select 
request_session_id spid,                              (死锁进程id)
OBJECT_NAME(resource_associated_entity_id) tableName  (死锁进程名称)
from sys.dm_tran_locks 
where resource_type=\’OBJECT\’                          (数据类型所有)

(2)杀死死锁进程

declare @spid int                                      //声明id
Set     @spid = 62                                     //设置死锁id
declare @sql varchar(1000)                             //声明sql 
set     @sql=\’kill \’+cast(@spid as varchar)            //设置 kill掉死锁进程
exec    (@sql)                                         //执行

或者

kill 62;

sqlserver 批量kill死锁

select \’kill \’+CONVERT(varchar,request_session_id) ,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks
where
   resource_type=\’OBJECT\’

解决sqlserver死锁问题

创造死锁

— 开始事务
BEGIN TRANSACTION 
update job set create_user=\’0000\’ where id = \’1\’
WAITFOR DELAY \’02:00\’
— 执行查询
select * from job where id = \’1\’;

解决方法

方法一

  • 打开sqlserver管理工具,新建sql查询tab
  • 执行select * from master.sys.sysprocesses where dbid=db_id(‘数据库名’)
  • 然后会查询到具体有哪个在连接到此数据库
  • 直接KILL spid的具体数值就可以了

方法二

— 首先查询
select    
    request_session_id spid,   
    OBJECT_NAME(resource_associated_entity_id) tableName    
from    
    sys.dm_tran_locks   
where    
    resource_type=\’OBJECT\’ 
— 然后执行
    kill 67;

注意事项:

有些用户连接可以在kill掉后自动重建,但期间有一段时间,如果碰到这种情况,需要在执行完kill命令后立即执行脱机操作

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持悠久资源。

您可能感兴趣的文章:

  • SqlServer查询和Kill进程死锁的语句
  • 查询Sqlserver数据库死锁的一个存储过程分享
  • 查找sqlserver查询死锁源头的方法 sqlserver死锁监控

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 MsSql Sqlserver之死锁查询以及批量解锁的实现方法 https://www.u-9.cn/database/mssql/5742.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务