USE master
GO
IF OBJECT_ID('dbo.sp_kill_blocked','P') IS NOT NULL
DROP PROCEDURE dbo.sp_kill_blocked
GO
CREATE PROCEDURE dbo.sp_kill_blocked
AS
/*
作者:陈恩辉-弘恩
找出发生死锁,阻塞的语句并直接KILL掉
*/
DECLARE @kill VARCHAR(255) , @dbcc_inputbuffer VARCHAR(255) ;
WITH cte
AS ( SELECT *
FROM master.sys.sysprocesses p
WHERE p.spid > 50
AND p.blocked > 0
)
SELECT @kill = ' kill ' + CAST(blocked AS VARCHAR) ,
@dbcc_inputbuffer = ' dbcc inputbuffer( ' + CAST(blocked AS VARCHAR) + ')'
FROM cte a
WHERE NOT EXISTS ( SELECT 1
FROM cte b
WHERE a.blocked = b.spid )
IF @kill IS NOT NULL
OR @dbcc_inputbuffer IS NOT NULL
BEGIN
SELECT GETDATE() AS exec_time ,
@kill AS [exec_kill] ,
@dbcc_inputbuffer AS dbcc_inputbuffer ;
PRINT @dbcc_inputbuffer
PRINT @kill
EXEC (@dbcc_inputbuffer)
EXEC (@kill)
END
ELSE
BEGIN
SELECT GETDATE() AS exec_time ,'没有死锁,请确认!' AS result
END
GO
EXEC sp_Ms_marksystemobject 'sp_kill_blocked'
GO
分享到:
相关推荐
oracle查询死锁语句,并能根据根据ID值杀死锁表的进程!
主要介绍了SqlServer查询和Kill进程死锁的语句,非常不错,具有参考借鉴价值,需要的朋友可以参考下
操作系统课件:Lecture9 进程的死锁.ppt
操作系统:05第五章 死锁与饥饿.ppt
java源码:Java多线程程序死锁检查 JCarder.zip
操作系统课件:05第五章 死锁与饥饿.ppt
MSSQL、DB2、Oracle之类的现代DBMS或者中间件可以帮助我们自动解决绝大部分死锁,其余一部分难以处理的死锁则由DBA在数据库控制端手工处理。就应用程序而言,不需要在源代码级过多考虑地考虑死锁问题。死锁的发生对...
oracle数据库死锁查询并处理,被锁对象、引起死锁原因等查询及解决方法
本文将要为您介绍的是MSSQL死锁产生原因及解决方法,教程操作方法: 一、 什么是死锁 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去....
oracle后台查看死锁语句,也可以通过plsql的工具---会话--点击lock_wait列过滤出死锁的语句。
NULL 博文链接:https://yanggx.iteye.com/blog/702761
1、查询数据库有未提交事务语句、关键的死锁阻塞语句; 2、通过脚本可以准确找到引起死锁的关键进程,然后结束掉这一条,从而达到释放死锁问题。 3、优点:通过找到关键的语句结束,可以有效防止全部解锁带来的数据...
思维导图:2020.10.23-计算机操作系统(第四版)(汤小丹)-第三章:处理机调度和死锁 #P85.png 原文:http://t.csdn.cn/vAY4Q
本过程自动捕捉SQLSERVER中的死锁进程并且自动杀掉
检查 Sql Server的阻塞和死锁--------------------------------------------
车辆行驶死锁问题,在Linux下用C语言完成下面模型:设有一个T型路口,其中A,B,C,D各处可容纳一辆车,车型方向如图所示。找出死锁并用有序分配法消除之,要求资源编号合理。
在使用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映。这个时候,就需要kill掉某个正在消耗资源的query语句即可, KILL命令的语法格式如下: KILL [CONNECTION | QUERY] thread_id 每个与mysqld的连接...