SQL检查死锁情况
2013-04-03 09:30
106 查看
CREATE procedure sp_who_lock as begin declare @spid int declare @blk int declare @count int declare @index int declare @lock tinyint set @lock=0 create table #temp_who_lock ( id int identity(1,1), spid int, blk int ) if @@error<>0 return @@error insert into #temp_who_lock(spid,blk) select 0 ,blocked from (select * from master..sysprocesses where blocked>0)a where not exists(select * from master..sysprocesses where a.blocked =spid and blocked>0) union select spid,blocked from master..sysprocesses where blocked>0 if @@error<>0 return @@error select @count=count(*),@index=1 from #temp_who_lock if @@error<>0 return @@error if @count=0 begin select '没有阻塞和死锁信息' return 0 end while @index<=@count begin if exists(select 1 from #temp_who_lock a where id>@index and exists(select 1 from #temp_who_lock where id<=@index and a.blk=spid)) begin set @lock=1 select @spid=spid,@blk=blk from #temp_who_lock where id=@index select '引起数据库死锁的是: '+ CAST(@spid AS VARCHAR(10)) + '进程号,其执行的SQL语法如下' select @spid, @blk dbcc inputbuffer(@spid) dbcc inputbuffer(@blk) end set @index=@index+1 end if @lock=0 begin set @index=1 while @index<=@count begin select @spid=spid,@blk=blk from #temp_who_lock where id=@index if @spid=0 select '引起阻塞的是:'+cast(@blk as varchar(10))+ '进程号,其执行的SQL语法如下' else select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '进程号SPID:'+ CAST(@blk AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下' dbcc inputbuffer(@spid) dbcc inputbuffer(@blk) set @index=@index+1 end end drop table #temp_who_lock return 0 end GO exec sp_who_lock
相关文章推荐
- Oracle EBS-SQL (PO-9):检查期间采购订单执行情况.sql
- 监控SQL Server正在执行的SQL语句和死锁情况
- [SQL]启动SQLServer的死锁检查
- MYSQL数据库表出现死锁的情况,调查哪句sql死锁
- remove_constans() ——检查共享池总的sql运行情况。
- Oracle EBS-SQL (PO-16):检查采购订单完成情况统计.sql
- SQL中如何检查死锁
- [SQL]启动SQLServer的死锁检查
- [SQL]启动SQLServer的死锁检查
- [SQL]启动SQLServer的死锁检查
- sqlserver检查死锁的sql
- [SQL]启动SQLServer的死锁检查
- [SQL]启动SQLServer的死锁检查
- 使用Druid对SQL执行情况进行监控,以及SQL注入等的检查
- 确定系统中是否存在绑定变量的情况,ASKTOM提供函数remove_constans()来检查共享池中的SQL运行情况
- [SQL]启动SQLServer的死锁检查
- Oracle检查死锁的sql(转)
- [SQL]启动SQLServer的死锁检查
- Oracle检查死锁的sql(转)
- pl/sql死锁情况:record is locked by another user