@@ -151,7 +151,7 @@ BEGIN
151151 DB_ID(@DatabaseName),
152152 @ProductVersion nvarchar(128 ) =
153153 CAST(SERVERPROPERTY(' ProductVersion' ) AS nvarchar(128 )),
154- @ProductVersionMajor float =
154+ @ProductVersionMajor decimal ( 5 , 1 ) =
155155 SUBSTRING
156156 (
157157 CAST(SERVERPROPERTY(' ProductVersion' ) AS nvarchar(128 )),
@@ -210,9 +210,7 @@ BEGIN
210210 @StringToExecuteParams nvarchar(500 ) = N' ' ,
211211 @r sysname = NULL ,
212212 @OutputTableFindings nvarchar(100 ) = N' [BlitzLockFindings]' ,
213- @DeadlockCount int = 0 ,
214- @ServerName sysname = @@SERVERNAME,
215- @OutputDatabaseCheck bit = - 1 ,
213+ @OutputDatabaseCheck bit = 1 ,
216214 @SessionId int = 0 ,
217215 @TargetSessionId int = 0 ,
218216 @FileName nvarchar(4000 ) = N' ' ,
@@ -339,6 +337,12 @@ BEGIN
339337 @StartDateUTC = @StartDate,
340338 @EndDateUTC = @EndDate;
341339
340+ IF @StartDate > @EndDate
341+ BEGIN
342+ RAISERROR(' @StartDate cannot be after @EndDate.' , 11 , 1 ) WITH NOWAIT;
343+ RETURN;
344+ END;
345+
342346 IF
343347 (
344348 @MI = 1
@@ -528,7 +532,7 @@ BEGIN
528532
529533
530534 IF @Azure = 0
531- AND LOWER (@TargetSessionType) <> N' table'
535+ AND (@TargetSessionType IS NULL OR LOWER (@TargetSessionType) <> N' table' )
532536 BEGIN
533537 IF NOT EXISTS
534538 (
@@ -547,7 +551,7 @@ BEGIN
547551 END;
548552
549553 IF @Azure = 1
550- AND LOWER (@TargetSessionType) <> N' table'
554+ AND (@TargetSessionType IS NULL OR LOWER (@TargetSessionType) <> N' table' )
551555 BEGIN
552556 IF NOT EXISTS
553557 (
@@ -588,18 +592,22 @@ BEGIN
588592 SELECT
589593 @StringToExecute =
590594 N' SELECT @r = o.name FROM ' +
591- @OutputDatabaseName +
595+ QUOTENAME( @OutputDatabaseName) +
592596 N' .sys.objects AS o inner join ' +
593- @OutputDatabaseName +
597+ QUOTENAME( @OutputDatabaseName) +
594598 N' .sys.schemas as s on o.schema_id = s.schema_id WHERE o.type_desc = N' ' USER_TABLE' ' AND o.name = ' +
595599 QUOTENAME
596600 (
597601 @OutputTableName,
598602 N' ' ' '
599603 ) +
600- N' AND s.name =' ' ' +
601- @OutputSchemaName +
602- N' ' ' ;' ,
604+ N' AND s.name = ' +
605+ QUOTENAME
606+ (
607+ @OutputSchemaName,
608+ N' ' ' '
609+ ) +
610+ N' ;' ,
603611 @StringToExecuteParams =
604612 N' @r sysname OUTPUT' ;
605613
@@ -670,7 +678,7 @@ BEGIN
670678 N' .sys.all_columns AS o WHERE o.object_id = (OBJECT_ID(' ' ' +
671679 @ObjectFullName +
672680 N' ' ' )) AND o.name = N' ' client_option_1' ' )
673- /*Add wait_resource column*/
681+ /*Add client_option_1 column*/
674682 ALTER TABLE ' +
675683 @ObjectFullName +
676684 N' ADD client_option_1 varchar(500) NULL;' ;
@@ -686,7 +694,7 @@ BEGIN
686694 N' .sys.all_columns AS o WHERE o.object_id = (OBJECT_ID(' ' ' +
687695 @ObjectFullName +
688696 N' ' ' )) AND o.name = N' ' client_option_2' ' )
689- /*Add wait_resource column*/
697+ /*Add client_option_2 column*/
690698 ALTER TABLE ' +
691699 @ObjectFullName +
692700 N' ADD client_option_2 varchar(500) NULL;' ;
@@ -702,7 +710,7 @@ BEGIN
702710 N' .sys.all_columns AS o WHERE o.object_id = (OBJECT_ID(' ' ' +
703711 @ObjectFullName +
704712 N' ' ' )) AND o.name = N' ' lock_mode' ' )
705- /*Add wait_resource column*/
713+ /*Add lock_mode column*/
706714 ALTER TABLE ' +
707715 @ObjectFullName +
708716 N' ADD lock_mode nvarchar(256) NULL;' ;
@@ -718,7 +726,7 @@ BEGIN
718726 N' .sys.all_columns AS o WHERE o.object_id = (OBJECT_ID(' ' ' +
719727 @ObjectFullName +
720728 N' ' ' )) AND o.name = N' ' status' ' )
721- /*Add wait_resource column*/
729+ /*Add status column*/
722730 ALTER TABLE ' +
723731 @ObjectFullName +
724732 N' ADD status nvarchar(256) NULL;' ;
@@ -851,7 +859,10 @@ BEGIN
851859 SELECT
852860 1 / 0
853861 FROM sys .objects AS o
862+ JOIN sys .schemas AS s
863+ ON o .schema_id = s .schema_id
854864 WHERE o .name = N' DeadlockFindings'
865+ AND s .name = N' dbo'
855866 AND o .type_desc = N' SYNONYM'
856867 )
857868 BEGIN
@@ -878,7 +889,10 @@ BEGIN
878889 SELECT
879890 1 / 0
880891 FROM sys .objects AS o
892+ JOIN sys .schemas AS s
893+ ON o .schema_id = s .schema_id
881894 WHERE o .name = N' DeadLockTbl'
895+ AND s .name = N' dbo'
882896 AND o .type_desc = N' SYNONYM'
883897 )
884898 BEGIN
@@ -993,7 +1007,7 @@ BEGIN
9931007 /* If ring buffers*/
9941008 IF
9951009 (
996- @TargetSessionType LIKE N' ring%'
1010+ LOWER ( @TargetSessionType) LIKE N' ring%'
9971011 AND @EventSessionName NOT LIKE N' system_health%'
9981012 )
9991013 BEGIN
@@ -1048,7 +1062,7 @@ BEGIN
10481062 /* If event file*/
10491063 IF
10501064 (
1051- @TargetSessionType LIKE N' event%'
1065+ LOWER ( @TargetSessionType) LIKE N' event%'
10521066 AND @EventSessionName NOT LIKE N' system_health%'
10531067 )
10541068 BEGIN
@@ -1093,13 +1107,13 @@ BEGIN
10931107 RAISERROR(' @TargetSessionType is event_file, assigning XML for Azure' , 0 , 1 ) WITH NOWAIT;
10941108 SELECT
10951109 @SessionId =
1096- t .event_session_address ,
1110+ t .event_session_id ,
10971111 @TargetSessionId =
1098- t .target_name
1099- FROM sys .dm_xe_database_session_targets t
1100- JOIN sys .dm_xe_database_sessions s
1101- ON s .address = t .event_session_address
1102- WHERE t .target_name = @TargetSessionType
1112+ t .target_id
1113+ FROM sys .database_event_session_targets AS t
1114+ JOIN sys .database_event_sessions AS s
1115+ ON s .event_session_id = t .event_session_id
1116+ WHERE t .name = @TargetSessionType
11031117 AND s .name = @EventSessionName
11041118 OPTION(RECOMPILE);
11051119
@@ -1117,7 +1131,7 @@ BEGIN
11171131 SELECT
11181132 file_name =
11191133 CONVERT (nvarchar(4000 ), f .value )
1120- FROM sys .server_event_session_fields AS f
1134+ FROM sys .database_event_session_fields AS f
11211135 WHERE f .event_session_id = @SessionId
11221136 AND f .object_id = @TargetSessionId
11231137 AND f .name = N' filename'
@@ -1149,7 +1163,7 @@ BEGIN
11491163 /* If ring buffers*/
11501164 IF
11511165 (
1152- @TargetSessionType LIKE N' ring%'
1166+ LOWER ( @TargetSessionType) LIKE N' ring%'
11531167 AND @EventSessionName NOT LIKE N' system_health%'
11541168 )
11551169 BEGIN
@@ -1184,7 +1198,7 @@ BEGIN
11841198 /* If event file*/
11851199 IF
11861200 (
1187- @TargetSessionType LIKE N' event_file%'
1201+ LOWER ( @TargetSessionType) LIKE N' event_file%'
11881202 AND @EventSessionName NOT LIKE N' system_health%'
11891203 )
11901204 BEGIN
@@ -1223,7 +1237,7 @@ BEGIN
12231237 /* This section deals with event file*/
12241238 IF
12251239 (
1226- @TargetSessionType LIKE N' event%'
1240+ LOWER ( @TargetSessionType) LIKE N' event%'
12271241 AND @EventSessionName LIKE N' system_health%'
12281242 )
12291243 BEGIN
@@ -2005,16 +2019,15 @@ BEGIN
20052019 ADD
20062020 waiter_mode nvarchar(256 ),
20072021 owner_mode nvarchar(256 ),
2008- is_victim AS
2009- CONVERT
2010- (
2011- bit ,
2012- CASE
2013- WHEN id = victim_id
2014- THEN 1
2015- ELSE 0
2016- END
2017- ) PERSISTED;
2022+ is_victim bit NOT NULL DEFAULT 0 ;
2023+
2024+ UPDATE
2025+ dp
2026+ SET
2027+ dp .is_victim = 1
2028+ FROM # deadlock_process AS dp
2029+ WHERE dp .deadlock_graph .exist(' deadlock/victim-list/victimProcess[@id = sql:column("dp.id")]' ) = 1
2030+ OPTION(RECOMPILE);
20182031
20192032 /* Update some nonsense*/
20202033 SET @d = CONVERT (varchar (40 ), GETDATE(), 109 );
@@ -2346,21 +2359,24 @@ BEGIN
23462359 OVER (ORDER BY COUNT_BIG(DISTINCT dow .event_date ) DESC )
23472360 FROM # deadlock_owner_waiter AS dow
23482361 WHERE 1 = 1
2349- AND dow .lock_mode IN
2350- (
2351- N' S' ,
2352- N' IS'
2353- )
2354- OR dow .owner_mode IN
2355- (
2356- N' S' ,
2357- N' IS'
2358- )
2359- OR dow .waiter_mode IN
2360- (
2361- N' S' ,
2362- N' IS'
2363- )
2362+ AND
2363+ (
2364+ dow .lock_mode IN
2365+ (
2366+ N' S' ,
2367+ N' IS'
2368+ )
2369+ OR dow .owner_mode IN
2370+ (
2371+ N' S' ,
2372+ N' IS'
2373+ )
2374+ OR dow .waiter_mode IN
2375+ (
2376+ N' S' ,
2377+ N' IS'
2378+ )
2379+ )
23642380 AND (dow .database_id = @DatabaseId OR @DatabaseName IS NULL )
23652381 AND (dow .event_date >= @StartDate OR @StartDate IS NULL )
23662382 AND (dow .event_date < @EndDate OR @EndDate IS NULL )
@@ -3360,7 +3376,7 @@ BEGIN
33603376 finding_group = N' Agent Job Deadlocks' ,
33613377 finding =
33623378 N' There have been ' +
3363- RTRIM( COUNT_BIG(DISTINCT aj .event_date )) +
3379+ CONVERT (nvarchar( 20 ), COUNT_BIG(DISTINCT aj .event_date )) +
33643380 N' deadlocks from this Agent Job and Step.' ,
33653381 sort_order =
33663382 ROW_NUMBER()
@@ -3480,7 +3496,7 @@ BEGIN
34803496 finding
34813497 )
34823498 SELECT
3483- check_id = 14 ,
3499+ check_id = 16 ,
34843500 database_name = N' -' ,
34853501 object_name = N' -' ,
34863502 finding_group = N' Total implicit transaction deadlocks' ,
@@ -4224,13 +4240,13 @@ BEGIN
42244240 total_logical_reads_mb =
42254241 deqs .total_logical_reads * 8 . / 1024 .,
42264242 min_grant_mb =
4227- deqs .min_grant_kb * 8 . / 1024 .,
4243+ deqs .min_grant_kb / 1024 .,
42284244 max_grant_mb =
4229- deqs .max_grant_kb * 8 . / 1024 .,
4245+ deqs .max_grant_kb / 1024 .,
42304246 min_used_grant_mb =
4231- deqs .min_used_grant_kb * 8 . / 1024 .,
4247+ deqs .min_used_grant_kb / 1024 .,
42324248 max_used_grant_mb =
4233- deqs .max_used_grant_kb * 8 . / 1024 .,
4249+ deqs .max_used_grant_kb / 1024 .,
42344250 deqs .min_reserved_threads ,
42354251 deqs .max_reserved_threads ,
42364252 deqs .min_used_threads ,
@@ -4538,10 +4554,6 @@ BEGIN
45384554 @r,
45394555 OutputTableFindings =
45404556 @OutputTableFindings,
4541- DeadlockCount =
4542- @DeadlockCount,
4543- ServerName =
4544- @ServerName,
45454557 OutputDatabaseCheck =
45464558 @OutputDatabaseCheck,
45474559 SessionId =
0 commit comments