创建存储过程sp_who_lock,查询死锁的进程

create procedure sp_who_lock
WITH ENCRYPTION
as
begindeclare @spid int,@bl int,@intTransactionCountOnEntry     int,@intRowcount             int,@intCountProperties         int,@intCounter             intcreate table #tmp_lock_who (id int identity(1,1),spid smallint,bl smallint)IF @@ERROR <> 0 RETURN @@ERRORinsert into #tmp_lock_who(spid,bl) select spid,blocked from sysprocesses where  blocked <> 0IF @@ERROR <> 0 RETURN @@ERROR-- 找到临时表的记录数select @intCountProperties = Count(1),@intCounter = 1 from #tmp_lock_whoIF @@ERROR <> 0 RETURN @@ERRORif @intCountProperties=0select '现在没有阻塞和死锁信息' as 'message'-- 循环开始while @intCounter = @intCountPropertiesbegin-- 取第一条记录select     @spid = spid,@bl = blfrom #tmp_lock_who where Id = @intCounterbeginselect '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被'+ '进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'DBCC INPUTBUFFER (@bl )end-- 循环指针下移set @intCounter = @intCounter + 1enddrop table #tmp_lock_whoreturn 0
end

View Code

下面我们自己构建一个死锁进程:

BEGIN TRANSACTION--开始事务update   T_Users  set UserName='00000'  where UserId='123'WAITFOR DELAY '01:00'; --指定1点执行 

View Code

执行查询语句:

select * from T_Users where UserId='123'

这时会发现一直在执行查询。得不到查询结果,我们执行第一步创建的存储过程sp_who_lock.得到结果如下:

此时我们只需执行

kill 53

然后再执行查询语句就可以得到结果了。

转载于:https://www.cnblogs.com/XiaoZone/p/9511815.html

数据库死锁查询及处理相关推荐

  1. 【MySQL】数据库死锁查询及处理

    数据库死锁 数据库死锁是事务性数据库 (如SQL Server, MySql等)经常遇到的问题.除非数据库死锁问题频繁出现导致用户无法操作,一般情况下数据库死锁问题不严重.在应用程序中进行try-ca ...

  2. oracle 数据库死锁查询并解除死锁

    --查询死锁 Select substr(to_char(l.session_id) || ',' || to_char(s.serial#), 1, 12) sid_ser,substr(l.os_ ...

  3. 查询Sqlserver数据库死锁的一个存储过程

    使用sqlserver作为数据库的应用系统,都避免不了有时候会产生死锁, 死锁出现以后,维护人员或者开发人员大多只会通过sp_who来查找死锁的进程,然后用sp_kill杀掉.利用sp_who_loc ...

  4. 一次诡异的数据库死锁问题排查过程

    GitHub 1.8k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 1.8k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 1.8k Star 的 ...

  5. 一次诡异的数据库死锁问题排查过程 1

    GitHub 1.8k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 1.8k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 1.8k Star 的 ...

  6. 研发协同平台数据库死锁处理及改进

    源宝导读:数据库死锁是高并发复杂系统都要面临课题,处理死锁问题没有一招制敌的标准方法,需要具体问题具体分析.本文将基于研发协同平台遇到的死锁案例,介绍从监控.分析到处理的完整过程和经验总结. 一.背景 ...

  7. 详述一则数据库死锁故障的分析过程

    墨墨导读:客户的监控告警频繁提示系统xx数据库死锁增长个数高于当前阈值_当前值1.00.下面是详细的故障分析诊断过程,以及详细的解决方案描述. 本文分为三部分: 1.背景概述 2.故障分析 3.根本解 ...

  8. atitit 提升数据库死锁处理总结

    atitit 提升数据库死锁处理总结 正常的来说,锁上都是自动的..不用官.. 正常来讲,insert时不需要加rowlock,就默认是rowlock了, #-----锁的自动转换原理.(正常的不用理 ...

  9. 数据库死锁的预防与解除

    死锁发生的条件:  1.资源不能共享,需要只能由一个进程或者线程使用  2.请求且保持,已经锁定的资源自已保持着不释放  3.不剥夺,自给申请到的资源不能被别人剥夺  4.循环等待  想预防死锁,把上 ...

最新文章

  1. css中的垂直居中方法
  2. 怎么把位域合成一个字节_C语言中字节对齐和位域
  3. 如何保存QQ聊天记录
  4. 如何使能linux vivid
  5. idea编辑器中使用@Data注解无效解决办法
  6. pcb结构链表_简单说说链表和一个应用实例
  7. 如何理解什么是放射?
  8. NVelocity条件选择语法
  9. 一个简单的PHP留言板
  10. 马哥linux_linux自学!拥有15万粉丝的Linux专研者 带你0基础学习linux!
  11. DirectShow 开启摄像头
  12. springboot智慧餐厅点餐餐桌预订系统设计与实现
  13. 通讯录2.0(动态内存增长版本)
  14. 学生管理系统(JSP+Servlet+MySQL)
  15. 6款逆天黑科技,颜值爆表,瞬间提升你的手机逼格!
  16. GCN-Global Convolutional Network
  17. android 系统要求,Android SDK系统要求
  18. delphi 多线程
  19. 不能安装64位office提示已安装32位的
  20. http://twitter.github.io/bootstrap/

热门文章

  1. 大型互联网网站架构心得之二:并、换和其它(转)
  2. HTML form 标签的 action 属性
  3. Spring的AOP使用xml配置
  4. JS getAttribute和setAttribute(取得和设置属性)的使用介绍
  5. linux 内核驱动编程 简单例子 与_IO, _IOR, _IOW, _IOWR 宏解析
  6. Android TextView里直接显示图片的三种方法
  7. Fibonacci数列 递归 杨辉三角 动态规划
  8. 实战测试SO_REUSEADDR选项
  9. NBIOT 移远BC28模块+stm32开发板例程、教程(打通TCP、COAP协议)
  10. Maven学习(一)——Maven入门