解决死锁SQL
USE [master]
GO
/****** Object:  StoredProcedure [dbo].[p_lockinfo]    Script Date: 04/03/2014 15:12:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[p_lockinfo]  
@kill_lock_spid bit=1, --是否杀掉死锁的进程,1 杀掉, 0 仅显示  
@show_spid_if_nolock bit=1 --如果没有死锁的进程,是否显示正常进程信息,1 显示,0 不显示  
as  
  --exec master.dbo.p_lockinfo 0,0 ---显示死锁的进程,不显示正常的进程  
 --KILL 52
--exec master.dbo.p_lockinfo 1,0 ---杀死死锁的进程,不显示正常的进程 
declare @count int,@s nvarchar(4000),@i int  
select id=identity(int,1,1),标志,  
进程ID=spid,线程ID=kpid,块进程ID=blocked,数据库ID=dbid,  
数据库名=db_name(dbid),用户ID=uid,用户名=loginame,累计CPU时间=cpu,  
登陆时间=login_time,打开事务数=open_tran, 进程状态=status,  
工作站名=hostname,应用程序名=program_name,工作站进程ID=hostprocess,  
域名=nt_domain,网卡地址=net_address  
into #t from(  
select 标志='死锁的进程',  
spid,kpid,a.blocked,dbid,uid,loginame,cpu,login_time,open_tran,  
status,hostname,program_name,hostprocess,nt_domain,net_address,  
s1=a.spid,s2=0 
from master..sysprocesses a join (  
select blocked from master..sysprocesses group by blocked  
)b on a.spid=b.blocked where a.blocked=0 
union all  
select '|_牺牲品_>',  
spid,kpid,blocked,dbid,uid,loginame,cpu,login_time,open_tran,  
status,hostname,program_name,hostprocess,nt_domain,net_address,  
s1=blocked,s2=1 
from master..sysprocesses a where blocked<>0  
)a order by s1,s2
select @count=@@rowcount,@i=1
if @count=0 and @show_spid_if_nolock=1 
begin  
insert #t  
select 标志='正常的进程',  
spid,kpid,blocked,dbid,db_name(dbid),uid,loginame,cpu,login_time,  
open_tran,status,hostname,program_name,hostprocess,nt_domain,net_address  
from master..sysprocesses  
set @count=@@rowcount  
end
if @count>0  
begin  
create table #t1(id int identity(1,1),a nvarchar(30),b Int,EventInfo TEXT)  
if @kill_lock_spid=1 
begin  
declare @spid varchar(10),@标志 varchar(10)  
while @i<=@count  
begin  
   select @spid=进程ID,@标志=标志 from #t WHERE id=@i  
   insert #t1 exec('dbcc inputbuffer('+@spid+')')  
   if @标志='死锁的进程' exec('kill '+@spid)  
   set @i=@i+1  
end  
end  
else  
while @i<=@count  
begin  
   select @s='dbcc inputbuffer('+cast(进程ID as varchar)+')' from #t WHERE id=@i  
   insert #t1 exec(@s)  
   set @i=@i+1  
end  
select a.*,进程的SQL语句=b.EventInfo  
from #t a join #t1 b on a.id=b.id  
end
解决死锁SQL的更多相关文章
- SQL Server中解决死锁
		SQL Server中解决死锁的新方法介绍 数据库操作的死锁是不可避免的,本文并不打算讨论死锁如何产生,重点在于解决死锁,通过SQL Server 2005, 现在似乎有了一种新的解决办法. 将下面的 ... 
- SQL Server中解决死锁的新方法介绍
		SQL Server中解决死锁的新方法介绍 数据库操作的死锁是不可避免的,本文并不打算讨论死锁如何产生,重点在于解决死锁,通过SQL Server 2005, 现在似乎有了一种新的解决办法. 将下面的 ... 
- 解决死锁之路3 - 常见 SQL 语句的加锁分析 (转)
		出处:https://www.aneasystone.com/archives/2017/12/solving-dead-locks-three.html 这篇博客将对一些常见的 SQL 语句进行加锁 ... 
- SQLServer查看和解决死锁的方法
		http://luohonghong.blog.163.com/blog/static/78312058201142411533316/ SQLServer查看和解决死锁的方法 2011-05-24 ... 
- 巧用MySQL InnoDB引擎锁机制解决死锁问题(转)
		该文会通过一个实际例子中的死锁问题的解决过程,进一步解释innodb的行锁机制 最近,在项目开发过程中,碰到了数据库死锁问题,在解决问题的过程中,笔者对MySQL InnoDB引擎锁机制的理解逐步加深 ... 
- 通过 sysprocesses 简单查询死锁及解决死锁办法
		简单查询死锁,如下四步可以轻松解决: 第一步:查询死锁语句 1: 条件是 blocked <> 0 select dbid,* from sys.sysprocesseswhere 1=1 ... 
- 【其他】【PL/SQL Developer】【1】解决PL/SQL Developer过期的情况
		正文: 1,开始菜单,搜索regedit,回车打开(即日常搜索电脑安装的软件的地方,regedit就是注册表) 2,按HKEY_CURRENT_USER\Software\Allround Autom ... 
- Windows下MFC程序利用LockCop解决死锁
		死锁现象:在训练的时候,点击“终止”按钮时不时会发生死锁. 检测工具:LockCop.TRACE宏.::GetCurrentThreadID函数. 检测手段: 总结起来就是—— 第一步:用LockCo ... 
- Java如何使用线程解决死锁?
		在Java编程中,如何使用线程解决死锁? 以下示例演示如何使用线程的概念解决死锁问题. // from W w w .Y I I b AI.c o M package com.yiibai; impo ... 
随机推荐
- PyCharm 134 单元测试输出大量空行解决方案
			在某次BugFix中,某哥们儿在/helper/pycharm/tcunittest.py加了个这: 各位亲们可以把True改为False即可解决大量空行的问题. 
- 桌面oracle 11g导入多年库的dump备忘
			接到客户6G的dump文件.先导入桌面orcale ,imp提示出错,执行impdp后如下 连接到: Oracle Database 11g Express Edition Release 11.2. ... 
- 没有 RunInstallerAttribute.Yes 的公共安装程序。在 C:/Program/xx.exe 程序集中可能可以找到
			今天在装服务的时候,装了半天总是提示 没有 RunInstallerAttribute.Yes 的公共安装程序.在 C:/Program/xx.exe 程序集中可能可以找到“Yes”属性. 才发现同事 ... 
- Apache+PHP+Mysql 集成环境   几个软件pk
			WampServer 2.5 64位 - 工具软件 - 源码之家 2014年8月25日 - WampServer是Apache+PHP+Mysql 集成环境,拥有简单的图形和菜单安装和配置环境.支持2 ... 
- SQL Server  数据库操作类
			/// <summary> /// SQLServerHelper的摘要说明. /// </summary> public class SQLServerHelper { pu ... 
- git delete repository
- Eclipse+Selenium自动化测试脚本设计V1.0
			Eclipse+Selenium自动化测试脚本设计V1.0 http://www.docin.com/p-803032251.html 
- WebDriver基本API使用(基于Java)V1.0
			WebDriver基本API使用(基于Java)V1.0http://www.docin.com/p-803032877.html 
- BZOJ 1006 [HNOI2008] 神奇的国度(简单弦图的染色)
			题目大意 K 国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即 AB 相互认识,BC 相互认识,CA 相互认识,是简洁高效的.为了巩固三角关系,K 国禁止四边关系,五边关系等 ... 
- Android使用SurfaceView实现墨迹天气的风车效果
			SurfaceView也是继承自View,它和我们以前接触到的View(Button.TextView等)最大的不同是,SurfaceView可以有一个单独的线程进行绘制,这个线程区别于UI线程(主线 ... 
