use mastergo 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
exec
sp_who2
執行sp_who2 ,看blk by 欄, 如果這欄不是空白, 有乙個數字, 這就是造成阻塞(blocking)的執行緒id. 然後執行dbcc inputbuffer(執行緒id), 你就可以看見這個執行緒在幹什麼。
SQL檢視死鎖
檢視sql死鎖 create procedure sp who lock as begin declare spid int declare blk int declare count int declare index int declare lock tinyint set lock 0 cre...
如何檢視死鎖時在執行的SQL語句
指令碼一,查出鎖的關係,誰把誰鎖主了 set serveroutput on declare mes varchar2 2000 tmp id1 number 22 tmp id2 number 22 lk sid number 22 tmp mac varchar2 64 fl boolean b...
sql server 檢視死鎖,以及執行語句
檢視死鎖 select t1.resource type 資源鎖定型別 db name resource database id as 資料庫名,t1.resource associated entity id 鎖定物件,t1.request mode as 等待者請求的鎖定模式,t1.reques...