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

Noella ·
更新时间:2024-09-20
· 1181 次阅读

目录

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

Sqlserver死锁查询以及解锁方法

sqlserver 批量kill死锁

解决sqlserver死锁问题

创造死锁

解决方法

总结

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 解锁

需要 登录 后方可回复, 如果你还没有账号请 注册新账号