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...