1.模拟锁表
1//建立模拟表 2 CREATE TABLE Lock1(C1 int default ( 0 )); 3 CREATE TABLE Lock2(C1 int default ( 0 )); 4 INSERT INTO Lock1 VALUES ( 1 ); 5 INSERT INTO Lock2 VALUES ( 1 );
2.发生死锁
1//在新开窗口1执行 2 Begin Tran 3 Update Lock1 Set C1 = C1 + 1 ; 4 WaitFor Delay ' 00:01:00 ' ; 5 SELECT * FROM Lock2 6 Rollback Tran ; 7 8//在新开窗口2执行 9Begin Tran 10 Update Lock2 Set C1 = C1 + 1 ; 11 WaitFor Delay ' 00:01:00 ' ; 12 SELECT * FROM Lock1 13 Rollback Tran ;
3.查询发生死锁的表
1select request_session_id spid, 2OBJECT_NAME(resource_associated_entity_id) tableName 3from sys.dm_tran_locks where resource_type='OBJECT'

//清除死锁注意:在新开窗口执行语句否则会发生

1declare @spid int Set @spid =121//spid为上一sql查询出来的结果这里是52、53、57 2declare @sql varchar(1000)set @sql='kill '+cast(@spid as varchar)exec(@sql)