檢視死鎖的SQL語句

2021-05-12 23:23:18 字數 1530 閱讀 5583

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

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