我已經捕獲spid,blockedByspid列中的一個表SPIDtable 這個值有點像這樣 這裏的死鎖週期是116-> 243-> 248- > 116 這個表中有很多這樣的死鎖。CTE查詢找到所有基於父spid和被阻塞的spid的死鎖
spid blockedBy
116 208
116 243
243 248
248 116
我已經寫CTE查詢打印出所有這樣的循環
這是找到了一些週期,但它是後最大100遞歸停止,有沒有更好的方法
;WITH cte(spid, blockedBy, isCycle)
as
(
select spid, blockedBy , 0 FROM SPIDTable
where blockedby <>0
union all
select S.spid , S.blockedBy, (case when CTE.blockedBy = S.spid then 1 else 0 end) as cycle from CTE
inner join SPIDtable S
on S.blockedBy = CTE.spid
)
select * from CTE where isCycle =1
查看跟蹤標誌1204和1222,以便在SQL Server檢測到它們時記錄全面的死鎖信息。 – Laurence 2014-09-24 18:36:19