SQLServer模拟死锁以及查询死锁进程和表

2025-10-29 15:37:48

1、连接SQLServer

SQLServer模拟死锁以及查询死锁进程和表

2、新建一个查询框

SQLServer模拟死锁以及查询死锁进程和表

3、创建2个表:

CREATE TABLE Lock1(C1 int default(0));

 

CREATE TABLE Lock2(C1 int default(0));

 

INSERT INTO Lock1 VALUES(1);

 

INSERT INTO Lock2 VALUES(1);

SQLServer模拟死锁以及查询死锁进程和表

4、继续新建一个文件执行:

Begin Tran

 

  Update Lock2 Set C1=C1+1;

 

  WaitFor Delay '00:00:30';

 

  SELECT * FROM Lock1

 

Rollback Tran;

SQLServer模拟死锁以及查询死锁进程和表

5、再新增一个文件执行:

Begin Tran

 

  Update Lock1 Set C1=C1+1;

 

  WaitFor Delay '00:00:30';

 

  SELECT * FROM Lock2

 

Rollback Tran;

 

SQLServer模拟死锁以及查询死锁进程和表

6、这样就能模拟死锁报错了

SQLServer模拟死锁以及查询死锁进程和表

7、然后通过这个SQL查报错的表和进程:

 

SELECT request_session_id spid, OBJECT_NAME( resource_associated_entity_id )

 

tableName FROM sys.dm_tran_locks WHERE resource_type = 'OBJECT'

SQLServer模拟死锁以及查询死锁进程和表

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢