Skip to content

Commit eb779c7

Browse files
Update sp_HumanEventsBlockViewer.sql
1 parent f018dc2 commit eb779c7

1 file changed

Lines changed: 50 additions & 24 deletions

File tree

sp_HumanEvents/sp_HumanEventsBlockViewer.sql

Lines changed: 50 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ ALTER PROCEDURE
7878
@log_schema_name sysname = NULL, /*schema to store logging tables*/
7979
@log_table_name_prefix sysname = 'HumanEventsBlockViewer', /*prefix for all logging tables*/
8080
@log_retention_days integer = 30, /*Number of days to keep logs, 0 = keep indefinitely*/
81+
@max_blocking_events bigint = 5000, /*maximum blocking events to analyze, 0 = unlimited*/
8182
@help bit = 0, /*get help with this procedure*/
8283
@debug bit = 0, /*print dynamic sql and select temp table contents*/
8384
@version varchar(30) = NULL OUTPUT, /*check the version number*/
@@ -131,6 +132,7 @@ BEGIN
131132
WHEN N'@log_schema_name' THEN N'schema to store logging tables'
132133
WHEN N'@log_table_name_prefix' THEN N'prefix for all logging tables'
133134
WHEN N'@log_retention_days' THEN N'how many days of data to retain'
135+
WHEN N'@max_blocking_events' THEN N'maximum blocking events to analyze, 0 = unlimited'
134136
WHEN N'@help' THEN 'how you got here'
135137
WHEN N'@debug' THEN 'dumps raw temp table contents'
136138
WHEN N'@version' THEN 'OUTPUT; for support'
@@ -154,6 +156,7 @@ BEGIN
154156
WHEN N'@log_schema_name' THEN N'any valid schema name'
155157
WHEN N'@log_table_name_prefix' THEN N'any valid identifier'
156158
WHEN N'@log_retention_days' THEN N'a positive integer'
159+
WHEN N'@max_blocking_events' THEN N'0 to 9223372036854775807 (0 = unlimited)'
157160
WHEN N'@help' THEN '0 or 1'
158161
WHEN N'@debug' THEN '0 or 1'
159162
WHEN N'@version' THEN 'none; OUTPUT'
@@ -177,6 +180,7 @@ BEGIN
177180
WHEN N'@log_schema_name' THEN N'NULL (dbo)'
178181
WHEN N'@log_table_name_prefix' THEN N'HumanEventsBlockViewer'
179182
WHEN N'@log_retention_days' THEN N'30'
183+
WHEN N'@max_blocking_events' THEN N'5000'
180184
WHEN N'@help' THEN '0'
181185
WHEN N'@debug' THEN '0'
182186
WHEN N'@version' THEN 'none; OUTPUT'
@@ -1136,11 +1140,18 @@ BEGIN
11361140
human_events_xml
11371141
)
11381142
SELECT
1139-
human_events_xml = e.x.query('.')
1140-
FROM #x AS x
1141-
CROSS APPLY x.x.nodes('/RingBufferTarget/event') AS e(x)
1142-
WHERE e.x.exist('@name[ .= "blocked_process_report"]') = 1
1143-
AND e.x.exist('@timestamp[. >= sql:variable("@start_date") and .< sql:variable("@end_date")]') = 1
1143+
human_events_xml
1144+
FROM
1145+
(
1146+
SELECT TOP (CASE WHEN @max_blocking_events > 0 THEN @max_blocking_events ELSE POWER(CONVERT(bigint, 2), 63) - 1 END)
1147+
human_events_xml = e.x.query('.'),
1148+
event_timestamp = e.x.value('@timestamp', 'datetime2')
1149+
FROM #x AS x
1150+
CROSS APPLY x.x.nodes('/RingBufferTarget/event') AS e(x)
1151+
WHERE e.x.exist('@name[ .= "blocked_process_report"]') = 1
1152+
AND e.x.exist('@timestamp[. >= sql:variable("@start_date") and .< sql:variable("@end_date")]') = 1
1153+
ORDER BY event_timestamp DESC
1154+
) AS most_recent
11441155
OPTION(RECOMPILE);
11451156
END;
11461157

@@ -1160,11 +1171,18 @@ BEGIN
11601171
human_events_xml
11611172
)
11621173
SELECT
1163-
human_events_xml = e.x.query('.')
1164-
FROM #x AS x
1165-
CROSS APPLY x.x.nodes('/event') AS e(x)
1166-
WHERE e.x.exist('@name[ .= "blocked_process_report"]') = 1
1167-
AND e.x.exist('@timestamp[. >= sql:variable("@start_date") and .< sql:variable("@end_date")]') = 1
1174+
human_events_xml
1175+
FROM
1176+
(
1177+
SELECT TOP (CASE WHEN @max_blocking_events > 0 THEN @max_blocking_events ELSE POWER(CONVERT(bigint, 2), 63) - 1 END)
1178+
human_events_xml = e.x.query('.'),
1179+
event_timestamp = e.x.value('@timestamp', 'datetime2')
1180+
FROM #x AS x
1181+
CROSS APPLY x.x.nodes('/event') AS e(x)
1182+
WHERE e.x.exist('@name[ .= "blocked_process_report"]') = 1
1183+
AND e.x.exist('@timestamp[. >= sql:variable("@start_date") and .< sql:variable("@end_date")]') = 1
1184+
ORDER BY event_timestamp DESC
1185+
) AS most_recent
11681186
OPTION(RECOMPILE);
11691187
END;
11701188

@@ -1211,22 +1229,30 @@ BEGIN
12111229
END;
12121230

12131231
SELECT
1214-
event_time =
1215-
DATEADD
1216-
(
1217-
MINUTE,
1218-
DATEDIFF
1232+
event_time,
1233+
human_events_xml
1234+
INTO #blocking_xml_sh
1235+
FROM
1236+
(
1237+
SELECT TOP (CASE WHEN @max_blocking_events > 0 THEN @max_blocking_events ELSE POWER(CONVERT(bigint, 2), 63) - 1 END)
1238+
event_time =
1239+
DATEADD
12191240
(
12201241
MINUTE,
1221-
GETUTCDATE(),
1222-
SYSDATETIME()
1242+
DATEDIFF
1243+
(
1244+
MINUTE,
1245+
GETUTCDATE(),
1246+
SYSDATETIME()
1247+
),
1248+
w.x.value('(//@timestamp)[1]', 'datetime2')
12231249
),
1224-
w.x.value('(//@timestamp)[1]', 'datetime2')
1225-
),
1226-
human_events_xml = w.x.query('//data[@name="data"]/value/queryProcessing/blockingTasks/blocked-process-report')
1227-
INTO #blocking_xml_sh
1228-
FROM #sp_server_diagnostics_component_result AS wi
1229-
CROSS APPLY wi.sp_server_diagnostics_component_result.nodes('//event') AS w(x)
1250+
human_events_xml = w.x.query('//data[@name="data"]/value/queryProcessing/blockingTasks/blocked-process-report'),
1251+
event_timestamp = w.x.value('(//@timestamp)[1]', 'datetime2')
1252+
FROM #sp_server_diagnostics_component_result AS wi
1253+
CROSS APPLY wi.sp_server_diagnostics_component_result.nodes('//event') AS w(x)
1254+
ORDER BY event_timestamp DESC
1255+
) AS most_recent
12301256
OPTION(RECOMPILE);
12311257

12321258
IF @debug = 1
@@ -1992,7 +2018,7 @@ SELECT
19922018
isolation_level = bg.value('(process/@isolationlevel)[1]', 'nvarchar(50)'),
19932019
log_used = bg.value('(process/@logused)[1]', 'bigint'),
19942020
clientoption1 = bg.value('(process/@clientoption1)[1]', 'bigint'),
1995-
clientoption2 = bg.value('(process/@clientoption1)[1]', 'bigint'),
2021+
clientoption2 = bg.value('(process/@clientoption2)[1]', 'bigint'),
19962022
currentdbname = bg.value('(process/@currentdbname)[1]', 'nvarchar(128)'),
19972023
currentdbid = bg.value('(process/@currentdb)[1]', 'integer'),
19982024
blocking_level = 0,

0 commit comments

Comments
 (0)