系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 数据库 > MsSql > 详细页面

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

时间:2023-10-27来源:系统城装机大师作者:佚名

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

Sqlserver死锁查询以及解锁方法

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

1
2
3
4
5
select 
request_session_id spid,                              (死锁进程id)
OBJECT_NAME(resource_associated_entity_id) tableName  (死锁进程名称)
from sys.dm_tran_locks 
where resource_type='OBJECT'                          (数据类型所有)

(2)杀死死锁进程

1
2
3
4
5
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死锁

1
2
3
select 'kill '+CONVERT(varchar,request_session_id) ,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks
where
   resource_type='OBJECT'

解决sqlserver死锁问题

创造死锁

1
2
3
4
5
6
-- 开始事务
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的具体数值就可以了

方法二

1
2
3
4
5
6
7
8
9
10
-- 首先查询
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 Server 数据库中的收缩数据库和文件操作

    收缩数据文件通过将数据页从文件末尾移动到更靠近文件开头的未占用的空间来恢复空间,在文件末尾创建足够的空间后,可取消对文件末尾的数据页的分配并将它们返回给文件系统,本文给大家介绍SQL Server 数据库中的收缩数据...

    2023-10-27

  • dbeaver配置SQL server连接实现

    一、需要java jdk环境,我用的比较新 二、dbeaver新建连接SQL server...

    2023-10-27

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载