目录
- 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查询和Kill进程死锁的语句
- 查询Sqlserver数据库死锁的一个存储过程分享
- 查找sqlserver查询死锁源头的方法 sqlserver死锁监控