Skip to content

Commit 80209c3

Browse files
authored
Merge pull request BrentOzarULTD#848 from BrentOzarULTD/sp_BlitzWho_847
Table variables ftw
2 parents 2d24448 + 748852b commit 80209c3

File tree

2 files changed

+65
-18
lines changed

2 files changed

+65
-18
lines changed

sp_BlitzCache.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2867,7 +2867,7 @@ SET Warnings = SUBSTRING(
28672867
CASE WHEN index_dml = 1 THEN ', Index DML' ELSE '' END +
28682868
CASE WHEN table_dml = 1 THEN ', Table DML' ELSE '' END +
28692869
CASE WHEN low_cost_high_cpu = 1 THEN ', Low Cost High CPU' ELSE '' END +
2870-
CASE WHEN long_running_low_cpu = 1 THEN + 'Long Running With Low CPU' ELSE '' END
2870+
CASE WHEN long_running_low_cpu = 1 THEN + ', Long Running With Low CPU' ELSE '' END
28712871
, 2, 200000)
28722872
WHERE SPID = @@SPID
28732873
OPTION (RECOMPILE) ;

sp_BlitzWho.sql

Lines changed: 64 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,33 @@ SELECT @ProductVersionMajor = SUBSTRING(@ProductVersion, 1,CHARINDEX('.', @Produ
8585

8686
IF @ProductVersionMajor > 9 and @ProductVersionMajor < 11
8787
BEGIN
88-
SET @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
88+
SET @StringToExecute = N'
89+
SET @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
90+
91+
92+
DECLARE @blocked TABLE
93+
(
94+
dbid SMALLINT NOT NULL,
95+
last_batch DATETIME NOT NULL,
96+
open_tran SMALLINT NOT NULL,
97+
sql_handle BINARY(20) NOT NULL,
98+
session_id SMALLINT NOT NULL,
99+
blocking_session_id SMALLINT NOT NULL,
100+
lastwaittype NCHAR(32) NOT NULL,
101+
waittime BIGINT NOT NULL,
102+
cpu INT NOT NULL,
103+
physical_io BIGINT NOT NULL,
104+
memusage INT NOT NULL
105+
);
106+
107+
INSERT @blocked ( dbid, last_batch, open_tran, sql_handle, session_id, blocking_session_id, lastwaittype, waittime, cpu, physical_io, memusage )
108+
SELECT
109+
sys1.dbid, sys1.last_batch, sys1.open_tran, sys1.sql_handle,
110+
sys2.spid AS session_id, sys2.blocked AS blocking_session_id, sys2.lastwaittype, sys2.waittime, sys2.cpu, sys2.physical_io, sys2.memusage
111+
FROM sys.sysprocesses AS sys1
112+
JOIN sys.sysprocesses AS sys2
113+
ON sys1.spid = sys2.blocked;
114+
89115
SELECT GETDATE() AS run_date ,
90116
COALESCE(
91117
CONVERT(VARCHAR(20), (r.total_elapsed_time / 1000) / 86400) + '':'' + CONVERT(VARCHAR(20), DATEADD(s, (r.total_elapsed_time / 1000), 0), 114) ,
@@ -204,13 +230,11 @@ SET @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
204230
AND qmg.pool_id = qrs.pool_id
205231
OUTER APPLY (
206232
SELECT TOP 1
207-
sys1.dbid, sys1.last_batch, sys1.open_tran, sys1.sql_handle,
208-
sys2.spid AS session_id, sys2.blocked AS blocking_session_id, sys2.lastwaittype, sys2.waittime
209-
FROM sys.sysprocesses AS sys1
210-
JOIN sys.sysprocesses AS sys2
211-
ON sys1.spid = sys2.blocked
212-
WHERE (s.session_id = sys2.spid
213-
OR s.session_id = sys2.blocked)
233+
b.dbid, b.last_batch, b.open_tran, b.sql_handle,
234+
b.session_id, b.blocking_session_id, b.lastwaittype, b.waittime
235+
FROM @blocked b
236+
WHERE (s.session_id = b.session_id
237+
OR s.session_id = b.blocking_session_id)
214238
) AS blocked
215239
OUTER APPLY sys.dm_exec_sql_text(COALESCE(r.sql_handle, blocked.sql_handle)) AS dest
216240
OUTER APPLY sys.dm_exec_query_plan(r.plan_handle) AS derp
@@ -235,7 +259,32 @@ SELECT @EnhanceFlag =
235259
ELSE 0
236260
END
237261
238-
SELECT @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
262+
SELECT @StringToExecute = N'
263+
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
264+
265+
DECLARE @blocked TABLE
266+
(
267+
dbid SMALLINT NOT NULL,
268+
last_batch DATETIME NOT NULL,
269+
open_tran SMALLINT NOT NULL,
270+
sql_handle BINARY(20) NOT NULL,
271+
session_id SMALLINT NOT NULL,
272+
blocking_session_id SMALLINT NOT NULL,
273+
lastwaittype NCHAR(32) NOT NULL,
274+
waittime BIGINT NOT NULL,
275+
cpu INT NOT NULL,
276+
physical_io BIGINT NOT NULL,
277+
memusage INT NOT NULL
278+
);
279+
280+
INSERT @blocked ( dbid, last_batch, open_tran, sql_handle, session_id, blocking_session_id, lastwaittype, waittime, cpu, physical_io, memusage )
281+
SELECT
282+
sys1.dbid, sys1.last_batch, sys1.open_tran, sys1.sql_handle,
283+
sys2.spid AS session_id, sys2.blocked AS blocking_session_id, sys2.lastwaittype, sys2.waittime, sys2.cpu, sys2.physical_io, sys2.memusage
284+
FROM sys.sysprocesses AS sys1
285+
JOIN sys.sysprocesses AS sys2
286+
ON sys1.spid = sys2.blocked;
287+
239288
SELECT GETDATE() AS run_date ,
240289
COALESCE(
241290
CONVERT(VARCHAR(20), (r.total_elapsed_time / 1000) / 86400) + '':'' + CONVERT(VARCHAR(20), DATEADD(s, (r.total_elapsed_time / 1000), 0), 114) ,
@@ -359,14 +408,12 @@ SELECT @StringToExecute = N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
359408
AND qmg.pool_id = qrs.pool_id
360409
OUTER APPLY (
361410
SELECT TOP 1
362-
sys1.dbid, sys1.last_batch, sys1.open_tran, sys1.sql_handle,
363-
sys2.spid AS session_id, sys2.blocked AS blocking_session_id, sys2.lastwaittype, sys2.waittime, sys2.cpu, sys2.physical_io, sys2.memusage
364-
FROM sys.sysprocesses AS sys1
365-
JOIN sys.sysprocesses AS sys2
366-
ON sys1.spid = sys2.blocked
367-
WHERE (s.session_id = sys2.spid
368-
OR s.session_id = sys2.blocked)
369-
) AS blocked
411+
b.dbid, b.last_batch, b.open_tran, b.sql_handle,
412+
b.session_id, b.blocking_session_id, b.lastwaittype, b.waittime
413+
FROM @blocked b
414+
WHERE (s.session_id = b.session_id
415+
OR s.session_id = b.blocking_session_id)
416+
) AS blocked
370417
OUTER APPLY sys.dm_exec_sql_text(COALESCE(r.sql_handle, blocked.sql_handle)) AS dest
371418
OUTER APPLY sys.dm_exec_query_plan(r.plan_handle) AS derp
372419
WHERE s.session_id <> @@SPID

0 commit comments

Comments
 (0)