Sqlserver之死锁查询以及批量解锁的实现方法
更新时间:2023年07月13日 10:18:33 作者:阿杰同学
这篇文章主要介绍了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命令后立即执行脱机操作
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环
这篇文章主要介绍了循环和游标在Sql存储过程中使用及sql如何使用cursor写一个简单的循环的相关资料,需要的朋友可以参考下2015-11-11
SQL Server误区30日谈 第5天 AWE在64位SQL SERVER中必须开启
在坊间流传的有关AWE的设置的各种版本让人非常困惑。比如说如何设置起作用,如何设置不起作用,在32位和64位上是否需要AWE等2013-01-01
SQL SERVER中SELECT和SET赋值相同点与不同点(推荐)
SELECT和SET在SQL SERVER中都可以用来对变量进行赋值,但其用法和效果在一些细节上有些不同。今天小编给大家分享SQL SERVER中SELECT和SET赋值相同点与不同点,感兴趣的朋友一起看看吧2019-12-12
sql server把退款总金额拆分到尽量少的多个订单中详解
这篇文章主要给大家介绍了关于sql server把退款总金额拆分到尽量少的多个订单中的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-12-12
MSSQL中删除用户时数据库主体在该数据库存中拥有架构 无法删除的解决方法
在ms sql2005 下面删除一个数据库的用户的时候提示 数据库主体在该数据库中拥有架构,无法删除的错误解决方案2013-08-08


最新评论