- if exists (select * from dbo.sysobjects where id = object_id(N"[dbo].[sp_who_lock]") and OBJECTPROPERTY(id, N"IsProcedure") = 1)
- drop procedure [dbo].[sp_who_lock]
- GO
- /***************************************************************************
- // 创建 :
- // 日期 :
- // 修改 :
- // 说明 : 查看数据库里阻塞和死锁情况
- ***************************************************************************/
- use master
- go
- create procedure sp_who_lock
- as
- begin
- declare @spid int,@bl int,
- @intTransactionCountOnEntry int,
- @intRowcount int,
- @intCountProperties int,
- @intCounter int
-
- create table #tmp_lock_who (
- id int identity(1,1),
- spid smallint,
- bl smallint)
-
- IF @@ERROR<>0 RETURN @@ERROR
-
- insert into #tmp_lock_who(spid,bl) select 0 ,blocked
- from (select * from sysprocesses where blocked>0 ) a
- where not exists(select * from (select * from sysprocesses where blocked>0 ) b
- where a.blocked=spid)
- union select spid,blocked from sysprocesses where blocked>0
-
- IF @@ERROR<>0 RETURN @@ERROR
-
- -- 找到临时表的记录数
- select @intCountProperties = Count(*),@intCounter = 1
- from #tmp_lock_who
-
- IF @@ERROR<>0 RETURN @@ERROR
-
- if @intCountProperties=0
- select "现在没有阻塞和死锁信息" as message
-
- -- 循环开始
- while @intCounter <= @intCountProperties
- begin
- -- 取第一条记录
- select @spid = spid,@bl = bl
- from #tmp_lock_who where Id = @intCounter
- begin
- if @spid =0
- select "引起数据库死锁的是: "+ CAST(@bl AS VARCHAR(10)) + "进程号,其执行的SQL语法如下"
- else
- select "进程号SPID:"+ CAST(@spid AS VARCHAR(10))+ "被" + "进程号SPID:"+ CAST(@bl AS VARCHAR(10)) +"阻塞,其当前进程执行的SQL语法如下"
- DBCC INPUTBUFFER (@bl )
- end
-
- -- 循环指针下移
- set @intCounter = @intCounter + 1
- end
-
-
- drop table #tmp_lock_who
-
- return 0
- end
用Java实现MongoDB正则查询小技巧MySQL大小写敏感问题和命名规范相关资讯 SQL
- SQL 新手指南 (09/10/2015 10:57:53)
- SQL导入txt以及SQL中的时间格式操 (01/25/2015 11:35:04)
- SQL 事务及实例演示 (08/12/2014 10:36:37)
| - SQL 中的正则函数 (06/28/2015 15:59:48)
- SQL 集合(笔记) (01/15/2015 20:19:06)
- Oracle shell调用SQL操作DB (02/03/2014 10:48:18)
|
本文评论 查看全部评论 (0)