Advertisement
Guest User

Untitled

a guest
Feb 19th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 1.60 KB | None | 0 0
  1. IF OBJECT_ID('tempdb..#Blocks') IS NOT NULL
  2.     DROP TABLE #Blocks
  3. SELECT   spid
  4.         ,blocked
  5.         ,REPLACE (REPLACE (st.TEXT, CHAR(10), ' '), CHAR (13), ' ' ) AS batch
  6. INTO     #Blocks
  7. FROM     sys.sysprocesses spr
  8. CROSS APPLY sys.dm_exec_sql_text(spr.SQL_HANDLE) st
  9. GO
  10.  
  11. WITH BlockingTree (spid, blocking_spid, [level], batch)
  12. AS
  13. (
  14.     SELECT   blc.spid
  15.             ,blc.blocked
  16.             ,CAST (REPLICATE ('0', 4-LEN (CAST (blc.spid AS VARCHAR))) + CAST (blc.spid AS VARCHAR) AS VARCHAR (1000)) AS [level]
  17.             ,blc.batch
  18.     FROM    #Blocks blc
  19.     WHERE   (blc.blocked = 0 OR blc.blocked = SPID)
  20.     AND     EXISTS (SELECT * FROM #Blocks blc2 WHERE blc2.BLOCKED = blc.SPID AND blc2.BLOCKED <> blc2.SPID)
  21.     UNION ALL
  22.     SELECT   blc.spid
  23.             ,blc.blocked
  24.             ,CAST(bt.[level] + RIGHT (CAST ((1000 + blc.SPID) AS VARCHAR (100)), 4) AS VARCHAR (1000)) AS [level]
  25.             ,blc.batch
  26.     FROM     #Blocks AS blc
  27.     INNER JOIN BlockingTree bt ON blc.blocked = bt.SPID
  28.     WHERE   blc.blocked > 0
  29.     AND     blc.blocked <> blc.SPID
  30. )
  31. SELECT N'' + ISNULL(REPLICATE (N'|         ', LEN (LEVEL)/4 - 2),'')
  32.         + CASE WHEN (LEN(LEVEL)/4 - 1) = 0 THEN '' ELSE '|------  ' END
  33.         + CAST (bt.SPID AS NVARCHAR (10)) AS BlockingTree
  34.         ,spr.lastwaittype   AS [Type]
  35.         ,spr.loginame       AS [Login Name]
  36.         ,st.text            AS [SQL Text]
  37.         ,DB_NAME(spr.dbid)  AS [Database]
  38.         ,spr.cmd            AS [Command]
  39.         ,spr.waitresource   AS [Wait Resource]
  40.         ,spr.program_name   AS [Application]
  41.         ,spr.hostname       AS [HostName]
  42.         ,spr.last_batch     AS [Last Batch Time]
  43. FROM BlockingTree bt
  44. LEFT OUTER JOIN sys.sysprocesses spr ON spr.spid = bt.spid
  45. CROSS APPLY sys.dm_exec_sql_text(spr.SQL_HANDLE) st
  46. ORDER BY LEVEL ASC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement