mssql sqlserver 使用 sys.dm_tran_locks 解决死锁进程的方法分享


摘要:
下文通过举例的方式分享,通过sys.dm_tran_locks 系统对象快速获取死锁进程,处理死锁的方法分享,如下所示:
下文通过模拟死锁一张表,
并通过 sys.dm_tran_locks 获取死锁进程所对应的死锁进程ID和死锁表名,
通过kill处理死锁的方法分享
实验环境:sql server 2008 R2


第一步:
打开查询分析器窗口:
输入以下sql脚本:

 
/*
生成基础数据
*/ 
create table test 
(keyID int ,info varchar(60))
go
insert into test(keyId,info)
values(100,'maomao365.com'),
(200,N'sql_blog教程')

go

/*开始事务*/
begin tran
   ---更新表数据
   update test 
   set info ='测试事务'
  
--让程序等待3分钟
WAITFOR DELAY '03:00';    


commit tran
truncate table test 
drop table test 
return;

第二步:打开另一个查询分析器窗口

      SELECT  request_session_id  as [进程Id],
        OBJECT_NAME(resource_associated_entity_id)  as [涉及对象],*
		FROM    sys.dm_tran_locks
	    WHERE   resource_type = 'OBJECT'
	

mssql_sqlserver_sys.dm_transe_locks

mssql_sqlserver_sys.dm_transe_locks


第三步:处理死锁对象的方法:
新开一个查询分析器窗口,输入:

	  kill [进程Id]