--转贴:

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

如何知道是哪个进程造成死锁?如何把这个进程杀掉?相关推荐

  1. C#种死锁:事务(进程 ID 112)与另一个进程被死锁在 锁

    C#种死锁:事务(进程 ID 112)与另一个进程被死锁在 锁 参考文章: (1)C#种死锁:事务(进程 ID 112)与另一个进程被死锁在 锁 (2) 通信缓冲区 资源上,并且已被选作死锁牺牲品.请 ...

  2. mysql查看死锁并杀掉_查看当前进程,或死锁进程,并能自动杀掉死进程_MySQL

    /*--处理死锁 查看当前进程,或死锁进程,并能自动杀掉死进程 因为是针对死的,所以如果有死锁进程,只能查看死锁进程 当然,你可以通过参数控制,不管有没有死锁,都只查看死锁进程 --邹建 2004.4 ...

  3. OS之进程管理 --- 死锁

    什么是死锁 在正常操作模式下,进程按如下顺序来使用资源: 申请:进程请求资源 使用:进程对资源进行操作 释放:进程释放资源 当一组进程中的每一个进程度在等待一个事件,而这事件只能有一组进程的另一个进程 ...

  4. 读写分离,读写分离死锁解决方案,事务发布死锁解决方案,发布订阅死锁解决方案|事务(进程 ID *)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务...

    前言:         由于网站访问压力的问题,综合分析各种因素后结合实际情况,采用数据库读写分离模式来解决当前问题.实际方案中采用"事务发布"模式实现主数据库和只读数据库的同步, ...

  5. 【详细解读】进程管理 -死锁问题 系统有三个进程:A B C 这3个进程都需要5个系统资源。如果系统至少有多少个资源,则不可能发生死锁

    进程管理 -死锁问题 系统有三个进程:A B C 这3个进程都需要5个系统资源.如果系统至少有多少个资源,则不可能发生死锁? 最多的状态是:每个进程恰好都分到了四个资源, 都只需要一个资源就可以运行, ...

  6. SQL Server死锁问题:事务(进程 ID x)与另一个进程被死锁在 锁 | 通信缓冲区资源上并且已被选作死锁牺牲品。请重新运行该事务。...

    ### The error occurred while setting parameters ### SQL: update ERP_SCjh_zzc_pl set IF_TONGBU=1 wher ...

  7. 10 操作系统第二章 进程管理 死锁、死锁的处理策略 银行家算法

    文章目录 1 死锁 1.1 死锁定义 1.2 死锁.饥饿.死循环的区别 1.3 死锁产生的必要条件 1.4 什么时候会发生死锁 1.5 死锁的处理策略 1.6 死锁的概念小结 2 死锁预防 2.1 破 ...

  8. 事务(进程 ID )与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品。请重新运行该事务...

    其实所有的死锁最深层的原因就是一个:资源竞争 表现一:     一个用户A 访问表A(锁住了表A),然后又访问表B     另一个用户B 访问表B(锁住了表B),然后企图访问表A 这时用户A由于用户B ...

  9. 面试-操作系统-进程管理-进程-进程调度-死锁

    文章目录 ==概念== 备注 简单说下你对并发和并行的理解? 同步.异步.阻塞.非阻塞的概念? 操作系统概念? 一个程序从开始运行到结束的完整过程,你能说出来多少? 用户态和内核态是如何切换的? 什么 ...

  10. mysql进程通信_事务(进程 ID 70)与另一个进程被死锁在 锁 | 通信缓冲区 资源上,并且...

    访问一个内部调研页面,打开第二次就死锁了,搜索了一下,一种可能的情况类似下面这种场景,SQLServer中似乎嵌套的SQL语句会造成死锁,用nolock hint可以解决这个问题. update  t ...

最新文章

  1. 有这么一群人,他们通过AI撬动世界!
  2. UIWebView实现离线浏览
  3. 模拟实现mapset
  4. OAuth 2.0协议在SAP产品中的应用
  5. idea android 模块,IntelliJ IDEA 12 - 新的Android应用程序模块向导失败,“无法找到模块的资源目录”...
  6. Mybatis(2)-注解使用-IDEA
  7. 设计模式六大原则(转)
  8. 实现线程安全的单例模式的四种方式
  9. jQuery Ajax Demo
  10. 解决post请求跨域请求第三方服务器
  11. 深投控合作之后 国美更具有想象力
  12. 私域流量运营和微商有什么区别?
  13. ipa文件生成扫码安装二维码的方法
  14. BWA处理WES文件
  15. 电视盒子系统是安卓还是yunOS,三招快速弄清
  16. 稀疏数组练习demo 数据结构和算法
  17. 利用手机访问电脑上开发的html页面
  18. 教师计算机知识比赛方案,小学信息技术教师基本功竞赛方案.doc
  19. PHPstorm 函数时间注释的修改   正常的PHPstorm里面函数方法的注释是没有动态时间设置的,但是看了PHP file里面有时间日期的注释,而PHP Function Doc Commen
  20. Android Studio计时器的简单使用

热门文章

  1. 防止监听scroll 事件影响页面性能
  2. Android-Universal-Image-Loader的工具类封装
  3. 微信小程序获取当前地理位置中文_微信小程序获取位置信息
  4. oracle报错对象不存在
  5. (day 17 - 快排)剑指 Offer 40. 最小的k个数
  6. python的输入输出语句_Python基本输出语句/输入语句/变量解析
  7. python3.8的用法_Python3.8对可迭代解包的改进及用法详解
  8. C#:SQL查询结果生成datatable后,根据min、max查询datatable中min到max的数据,并生成新的datatable
  9. 2020年GitHub上的7个顶级的Java开源目推荐(强烈安利)
  10. My97DatePicker JS时间控件 当前日期前后不能选