查询Sqlserver数据库死锁的一个存储过程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了查询Sqlserver数据库死锁的一个存储过程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1828字,纯文字阅读大概需要3分钟。
内容图文
使用sqlserver作为数据库的应用系统,都避免不了有时候会产生死锁, 死锁出现以后,维护人员或者开发人员大多只会通过sp_who来查找死锁的进程,然后用sp_kill杀掉。利用sp_who_lock这个存储过程,可以很方便的知道哪个进程出现了死锁,出现死锁的问题在哪里.
创建sp_who_lock存储过程
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
直到最后的结果为:
原文:http://www.cnblogs.com/tangliyu/p/4569453.html
内容总结
以上是互联网集市为您收集整理的查询Sqlserver数据库死锁的一个存储过程全部内容,希望文章能够帮你解决查询Sqlserver数据库死锁的一个存储过程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。