数据库死锁查询及处理
创建存储过程sp_who_lock,查询死锁的进程
![](/assets/blank.gif)
![](/assets/blank.gif)
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
下面我们自己构建一个死锁进程:
![](/assets/blank.gif)
![](/assets/blank.gif)
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
数据库死锁查询及处理相关推荐
- 【MySQL】数据库死锁查询及处理
数据库死锁 数据库死锁是事务性数据库 (如SQL Server, MySql等)经常遇到的问题.除非数据库死锁问题频繁出现导致用户无法操作,一般情况下数据库死锁问题不严重.在应用程序中进行try-ca ...
- oracle 数据库死锁查询并解除死锁
--查询死锁 Select substr(to_char(l.session_id) || ',' || to_char(s.serial#), 1, 12) sid_ser,substr(l.os_ ...
- 查询Sqlserver数据库死锁的一个存储过程
使用sqlserver作为数据库的应用系统,都避免不了有时候会产生死锁, 死锁出现以后,维护人员或者开发人员大多只会通过sp_who来查找死锁的进程,然后用sp_kill杀掉.利用sp_who_loc ...
- 一次诡异的数据库死锁问题排查过程
GitHub 1.8k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 1.8k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 1.8k Star 的 ...
- 一次诡异的数据库死锁问题排查过程 1
GitHub 1.8k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 1.8k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 1.8k Star 的 ...
- 研发协同平台数据库死锁处理及改进
源宝导读:数据库死锁是高并发复杂系统都要面临课题,处理死锁问题没有一招制敌的标准方法,需要具体问题具体分析.本文将基于研发协同平台遇到的死锁案例,介绍从监控.分析到处理的完整过程和经验总结. 一.背景 ...
- 详述一则数据库死锁故障的分析过程
墨墨导读:客户的监控告警频繁提示系统xx数据库死锁增长个数高于当前阈值_当前值1.00.下面是详细的故障分析诊断过程,以及详细的解决方案描述. 本文分为三部分: 1.背景概述 2.故障分析 3.根本解 ...
- atitit 提升数据库死锁处理总结
atitit 提升数据库死锁处理总结 正常的来说,锁上都是自动的..不用官.. 正常来讲,insert时不需要加rowlock,就默认是rowlock了, #-----锁的自动转换原理.(正常的不用理 ...
- 数据库死锁的预防与解除
死锁发生的条件: 1.资源不能共享,需要只能由一个进程或者线程使用 2.请求且保持,已经锁定的资源自已保持着不释放 3.不剥夺,自给申请到的资源不能被别人剥夺 4.循环等待 想预防死锁,把上 ...
最新文章
- css中的垂直居中方法
- 怎么把位域合成一个字节_C语言中字节对齐和位域
- 如何保存QQ聊天记录
- 如何使能linux vivid
- idea编辑器中使用@Data注解无效解决办法
- pcb结构链表_简单说说链表和一个应用实例
- 如何理解什么是放射?
- NVelocity条件选择语法
- 一个简单的PHP留言板
- 马哥linux_linux自学!拥有15万粉丝的Linux专研者 带你0基础学习linux!
- DirectShow 开启摄像头
- springboot智慧餐厅点餐餐桌预订系统设计与实现
- 通讯录2.0(动态内存增长版本)
- 学生管理系统(JSP+Servlet+MySQL)
- 6款逆天黑科技,颜值爆表,瞬间提升你的手机逼格!
- GCN-Global Convolutional Network
- android 系统要求,Android SDK系统要求
- delphi 多线程
- 不能安装64位office提示已安装32位的
- http://twitter.github.io/bootstrap/
热门文章
- 大型互联网网站架构心得之二:并、换和其它(转)
- HTML form 标签的 action 属性
- Spring的AOP使用xml配置
- JS getAttribute和setAttribute(取得和设置属性)的使用介绍
- linux 内核驱动编程 简单例子 与_IO, _IOR, _IOW, _IOWR 宏解析
- Android TextView里直接显示图片的三种方法
- Fibonacci数列 递归 杨辉三角 动态规划
- 实战测试SO_REUSEADDR选项
- NBIOT 移远BC28模块+stm32开发板例程、教程(打通TCP、COAP协议)
- Maven学习(一)——Maven入门