如何知道是哪个进程造成死锁?如何把这个进程杀掉?
--转贴:
MSSQL(查找死锁):
use master
go
declare @spid int,@bl int
DECLARE s_cur CURSOR FOR
select 0 ,blocked
from (select * from sysprocesses where blocked>0 ) a
where not exists(select * from (select * from sysprocesses where blocked>0 ) b where a.blocked=spid)
union
select spid,blocked from sysprocesses where blocked>0
OPEN s_cur
FETCH NEXT FROM s_cur INTO @spid,@bl
WHILE @@FETCH_STATUS = 0
begin
if @spid =0
select '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'
else
select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'
DBCC INPUTBUFFER (@bl )
FETCH NEXT FROM s_cur INTO @spid,@bl
end
CLOSE s_cur
DEALLOCATE s_cur
--邹建的
create proc sp_lockinfo
@kill_lock_spid bit=1, --是否杀掉阻塞的进程,1 杀掉, 0 仅显示
@show_spid_if_nolock bit=1, --如果没有阻塞的进程,是否显示正常进程信息,1 显示,0 不显示
@dbname sysname='' --如果为空,则查询所有的库,如果为null,则查询当前库,否则查询指定库
as
set nocount on
declare @count int,@s nvarchar(2000),@dbid int
if @dbname='' set @dbid=db_id() else set @dbid=db_id(@dbname)
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
where blocked>0
and(@dbid is null or dbid=@dbid)
group by blocked
)b on a.spid=b.blocked
where a.blocked=0
and(@dbid is null or dbid=@dbid)
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=spid
from master..sysprocesses a
where blocked<>0
and(@dbid is null or dbid=@dbid)
)a order by s1,s2
select @count=@@rowcount
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
where @dbid is null or dbid=@dbid
order by spid
set @count=@@rowcount
end
if @count>0
begin
create table #t1(id int identity(1,1),a nvarchar(30),b Int,EventInfo nvarchar(255))
declare tb cursor local
for
select N'insert #t1 exec(''dbcc inputbuffer('+rtrim(进程ID)+')'')
if @@rowcount=0 insert #t1(a) values(null)
'+case when @kill_lock_spid=1 and 标志=N'阻塞的进程'
then 'kill '+rtrim(进程ID) else '' end
from #t
open tb
fetch tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch tb into @s
end
close tb
deallocate tb
select a.*,进程的SQL语句=b.EventInfo
from #t a join #t1 b on a.id=b.id
order by a.ID
end
set nocount off
go
转载于:https://www.cnblogs.com/martian6125/archive/2009/07/23/9631278.html
如何知道是哪个进程造成死锁?如何把这个进程杀掉?相关推荐
- C#种死锁:事务(进程 ID 112)与另一个进程被死锁在 锁
C#种死锁:事务(进程 ID 112)与另一个进程被死锁在 锁 参考文章: (1)C#种死锁:事务(进程 ID 112)与另一个进程被死锁在 锁 (2) 通信缓冲区 资源上,并且已被选作死锁牺牲品.请 ...
- mysql查看死锁并杀掉_查看当前进程,或死锁进程,并能自动杀掉死进程_MySQL
/*--处理死锁 查看当前进程,或死锁进程,并能自动杀掉死进程 因为是针对死的,所以如果有死锁进程,只能查看死锁进程 当然,你可以通过参数控制,不管有没有死锁,都只查看死锁进程 --邹建 2004.4 ...
- OS之进程管理 --- 死锁
什么是死锁 在正常操作模式下,进程按如下顺序来使用资源: 申请:进程请求资源 使用:进程对资源进行操作 释放:进程释放资源 当一组进程中的每一个进程度在等待一个事件,而这事件只能有一组进程的另一个进程 ...
- 读写分离,读写分离死锁解决方案,事务发布死锁解决方案,发布订阅死锁解决方案|事务(进程 ID *)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务...
前言: 由于网站访问压力的问题,综合分析各种因素后结合实际情况,采用数据库读写分离模式来解决当前问题.实际方案中采用"事务发布"模式实现主数据库和只读数据库的同步, ...
- 【详细解读】进程管理 -死锁问题 系统有三个进程:A B C 这3个进程都需要5个系统资源。如果系统至少有多少个资源,则不可能发生死锁
进程管理 -死锁问题 系统有三个进程:A B C 这3个进程都需要5个系统资源.如果系统至少有多少个资源,则不可能发生死锁? 最多的状态是:每个进程恰好都分到了四个资源, 都只需要一个资源就可以运行, ...
- SQL Server死锁问题:事务(进程 ID x)与另一个进程被死锁在 锁 | 通信缓冲区资源上并且已被选作死锁牺牲品。请重新运行该事务。...
### The error occurred while setting parameters ### SQL: update ERP_SCjh_zzc_pl set IF_TONGBU=1 wher ...
- 10 操作系统第二章 进程管理 死锁、死锁的处理策略 银行家算法
文章目录 1 死锁 1.1 死锁定义 1.2 死锁.饥饿.死循环的区别 1.3 死锁产生的必要条件 1.4 什么时候会发生死锁 1.5 死锁的处理策略 1.6 死锁的概念小结 2 死锁预防 2.1 破 ...
- 事务(进程 ID )与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品。请重新运行该事务...
其实所有的死锁最深层的原因就是一个:资源竞争 表现一: 一个用户A 访问表A(锁住了表A),然后又访问表B 另一个用户B 访问表B(锁住了表B),然后企图访问表A 这时用户A由于用户B ...
- 面试-操作系统-进程管理-进程-进程调度-死锁
文章目录 ==概念== 备注 简单说下你对并发和并行的理解? 同步.异步.阻塞.非阻塞的概念? 操作系统概念? 一个程序从开始运行到结束的完整过程,你能说出来多少? 用户态和内核态是如何切换的? 什么 ...
- mysql进程通信_事务(进程 ID 70)与另一个进程被死锁在 锁 | 通信缓冲区 资源上,并且...
访问一个内部调研页面,打开第二次就死锁了,搜索了一下,一种可能的情况类似下面这种场景,SQLServer中似乎嵌套的SQL语句会造成死锁,用nolock hint可以解决这个问题. update t ...
最新文章
- 有这么一群人,他们通过AI撬动世界!
- UIWebView实现离线浏览
- 模拟实现mapset
- OAuth 2.0协议在SAP产品中的应用
- idea android 模块,IntelliJ IDEA 12 - 新的Android应用程序模块向导失败,“无法找到模块的资源目录”...
- Mybatis(2)-注解使用-IDEA
- 设计模式六大原则(转)
- 实现线程安全的单例模式的四种方式
- jQuery Ajax Demo
- 解决post请求跨域请求第三方服务器
- 深投控合作之后 国美更具有想象力
- 私域流量运营和微商有什么区别?
- ipa文件生成扫码安装二维码的方法
- BWA处理WES文件
- 电视盒子系统是安卓还是yunOS,三招快速弄清
- 稀疏数组练习demo 数据结构和算法
- 利用手机访问电脑上开发的html页面
- 教师计算机知识比赛方案,小学信息技术教师基本功竞赛方案.doc
- PHPstorm 函数时间注释的修改 正常的PHPstorm里面函数方法的注释是没有动态时间设置的,但是看了PHP file里面有时间日期的注释,而PHP Function Doc Commen
- Android Studio计时器的简单使用
热门文章
- 防止监听scroll 事件影响页面性能
- Android-Universal-Image-Loader的工具类封装
- 微信小程序获取当前地理位置中文_微信小程序获取位置信息
- oracle报错对象不存在
- (day 17 - 快排)剑指 Offer 40. 最小的k个数
- python的输入输出语句_Python基本输出语句/输入语句/变量解析
- python3.8的用法_Python3.8对可迭代解包的改进及用法详解
- C#:SQL查询结果生成datatable后,根据min、max查询datatable中min到max的数据,并生成新的datatable
- 2020年GitHub上的7个顶级的Java开源目推荐(强烈安利)
- My97DatePicker JS时间控件 当前日期前后不能选