在SQL Server 2008数据库中,查看死锁可以用存储过程来实现,本文我们主要就介绍了SQL Server 2008查看死锁的存储过程的代码示例,希望能够对您有所帮助。

代码示例如下:
- 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 @spidspid = spid,@blbl = 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
 
以上就是SQL Server 2008查看死锁的存储过程的代码示例的全部内容,本文我们就介绍到这里了,希望本次的介绍能够对您有所收获!
                文章题目:SQLServer2008查看死锁的存储过程的代码示例
                
                当前路径:http://www.csdahua.cn/qtweb/news7/442557.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网