死鎖的儲存過程

2021-04-13 01:07:48 字數 1546 閱讀 1948

exec sp_who_lock

use master

gocreate procedure sp_who_lock

asbegin

declare @spid int,@bl int,

@inttransactioncountonentry  int,

@introwcount    int,

@intcountproperties   int,

@intcounter    int

create table #tmp_lock_who (

id int identity(1,1),

spid **allint,

bl **allint)

if @@error<>0 return @@error

insert into #tmp_lock_who(spid,bl) 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

if @@error<>0 return @@error 

-- 找到臨時表的記錄數

select  @intcountproperties = count(*),@intcounter = 1

from #tmp_lock_who

if @@error<>0 return @@error 

if @intcountproperties=0

select '現在沒有死鎖資訊' as message

-- 迴圈開始

while @intcounter <= @intcountproperties

begin

-- 取第一條記錄

select  @spid = spid,@bl = bl

from #tmp_lock_who where id = @intcounter

begin

if @spid =0

select '引起死鎖的是: '+ cast(@bl as varchar(10)) + '程序號,其執行的語法如下'

else

select '程序號spid:'+ cast(@spid as varchar(10))+ '被' + '程序號spid:'+ cast(@bl as varchar(10)) +'阻塞,其當前程序執行的sql語法如下'

dbcc inputbuffer (@bl )

end 

-- 迴圈指標下移

set @intcounter = @intcounter + 1

end

drop table #tmp_lock_who

return 0

end  

KILL死鎖的儲存過程

死鎖可以查一下 1 sp who 或 sp who2 2 select from sysprocesses where blocked 0 3 企業管理器 伺服器 管理工具 活動 當前活動然後把他kill掉。4 sql事件探查器,監控一下,看主要是那些處理引起的死鎖.然後做相應的處理.用事件探查器n...

ORACLE 儲存過程死鎖

問題描述 在編譯某個儲存過程時,由於沒提交或斷網或者test沒停止又重新編譯,導致編譯存過一直卡死 問題分析 儲存過程或某張表被鎖 例如 儲存過程 p bonusmid 死鎖,表現的現象是在編譯時無響應。首先使用下面語句查詢存過 儲存過程 p bonusmid 的程序 select from v d...

MSSQL處理死鎖儲存過程

sql server死鎖使我們經常遇到的問題,下面就為您介紹如何查詢 sql server 死鎖,希望對您學習sql server死鎖方面能有所幫助。sql server死鎖的查詢方法 exec master.dbo.p lockinfo 0,0 顯示死鎖的程序,不顯示正常的程序 exec mast...