阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 1845阅读
  • 0回复

数据库死锁 相关处理和快速定位代码

级别: 论坛版主
发帖
153
云币
268
  1. USE [master]
  2. GO
  3. SET ANSI_NULLS ON
  4. GO
  5. SET QUOTED_IDENTIFIER ON
  6. GO
  7. CREATE procedure [dbo].[sp_who_lock]
  8. as
  9. begin
  10. declare @spid int, @bl int, @intTransactionCountOnEntry int, @intRowcount int, @intCountProperties int, @intCounter int
  11. create table #tmp_lock_who (
  12.     id int identity(1,1),
  13.     spid smallint,
  14.     bl smallint
  15. )
  16. IF @@ERROR<>0 RETURN @@ERROR
  17. insert into #tmp_lock_who(spid,bl) select 0 ,blocked
  18.     from (select * from sysprocesses where blocked>0 ) a
  19.     where not exists(select * from (select * from sysprocesses where blocked>0 ) b
  20.     where a.blocked=spid)
  21.     union select spid,blocked from sysprocesses where blocked>0
  22. IF @@ERROR<>0 RETURN @@ERROR
  23. -- 找到临时表的记录数
  24. select @intCountProperties = Count(*),@intCounter = 1
  25. from #tmp_lock_who
  26. IF @@ERROR<>0 RETURN @@ERROR
  27. if @intCountProperties=0
  28.     select '现在没有阻塞和死锁信息' as message
  29. -- 循环开始
  30. while @intCounter <= @intCountProperties
  31. begin
  32.     -- 取第一条记录
  33.     select @spid = spid,@bl = bl
  34.     from #tmp_lock_who where Id = @intCounter
  35.     begin
  36.         if @spid =0
  37.       select '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'
  38.         else
  39.       select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'
  40.         DBCC INPUTBUFFER (@bl )
  41.     end
  42.     -- 循环指针下移
  43.     set @intCounter = @intCounter + 1
  44. end
  45. drop table #tmp_lock_who
  46. return 0
  47. end
  48. [attachment=125808]

http://www.whbi.net 
http://blog.025ol.com
http://www.flowersrain.cn/
我知道我伸出手你不会跟我走,所以我伸出了脚。你被绊倒后,果然站起来就追着我跑!于是我发现:往往深情留不住,偏偏套路得人心!
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
验证问题: 69 - 62 = ?
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)