使用存储过程,可以检测是哪些SQL语句及进程造成死锁,接下来的SQL server内容就将为您介绍该存储过程,供您参考,希望对您学习SQL有所帮助。
假如发生了死锁,我们怎么去检测具体发生死锁的是哪条SQL语句或存储过程 此时我们可以使用以下存储过程来检测,就可以查出引起死锁的进程和SQL语句。
use master create procedure sp_who_lock begin @intTransactionCountOnEntry int, @intCountProperties int, create table #tmp_lock_who ( spid smallint, IF @@ERROR<>0 RETURN @@ERROR from (select * from sysprocesses where blocked>0 ) a (select * from sysprocesses where blocked>0 ) b union select spid,blocked from sysprocesses where blocked>0 – 找到临时表的记录数 from #tmp_lock_who if @intCountProperties=0 – 循环开始 begin select @spid = spid,@bl = bl begin select ’引起数据库死锁的是: ’+ CAST(@bl AS VARCHAR(10)) else + ’进程号SPID:’+ CAST(@bl AS VARCHAR(10)) +’阻塞,其当 前进程执行的SQL语法如下’DBCC INPUTBUFFER |