@@ -370,13 +370,15 @@ SET @VersionDate = '20171201';
370
370
FROM #deadlock_process AS dp
371
371
JOIN #deadlock_owner_waiter AS dow
372
372
ON dp .id = dow .owner_id
373
+ AND dp .event_date = dow .event_date
373
374
WHERE dp .is_victim = 0 ;
374
375
375
376
UPDATE dp
376
377
SET dp .waiter_mode = dow .waiter_mode
377
378
FROM #deadlock_process AS dp
378
379
JOIN #deadlock_owner_waiter AS dow
379
380
ON dp .victim_id = dow .waiter_id
381
+ AND dp .event_date = dow .event_date
380
382
WHERE dp .is_victim = 1 ;
381
383
382
384
@@ -471,6 +473,7 @@ SET @VersionDate = '20171201';
471
473
FROM #deadlock_process AS dp
472
474
JOIN #deadlock_owner_waiter AS dow
473
475
ON dp .id = dow .owner_id
476
+ AND dp .event_date = dow .event_date
474
477
GROUP BY DB_NAME (dp .database_id ), SUBSTRING (dp .wait_resource , 1 , CHARINDEX (' :' , dp .wait_resource ) - 1 ), dow .object_name
475
478
)
476
479
INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding )
@@ -495,6 +498,7 @@ SET @VersionDate = '20171201';
495
498
ds .id ,
496
499
ds .sql_handle ,
497
500
ds .proc_name ,
501
+ ds .event_date ,
498
502
PARSENAME (ds .proc_name , 3 ) AS database_name ,
499
503
PARSENAME (ds .proc_name , 2 ) AS schema_name ,
500
504
PARSENAME (ds .proc_name , 1 ) AS proc_only_name
@@ -516,6 +520,7 @@ SET @VersionDate = '20171201';
516
520
FROM deadlock_stack AS ds
517
521
JOIN #deadlock_owner_waiter AS dow
518
522
ON dow .owner_id = ds .id
523
+ AND dow .event_date = ds .event_date
519
524
OPTION ( RECOMPILE );
520
525
521
526
IF @ProductVersionMajor >= 13
@@ -526,6 +531,7 @@ SET @VersionDate = '20171201';
526
531
ds .id ,
527
532
ds .sql_handle ,
528
533
ds .proc_name ,
534
+ ds .event_date ,
529
535
PARSENAME (ds .proc_name , 3 ) AS database_name ,
530
536
PARSENAME (ds .proc_name , 2 ) AS schema_name ,
531
537
PARSENAME (ds .proc_name , 1 ) AS proc_only_name
@@ -546,6 +552,7 @@ SET @VersionDate = '20171201';
546
552
FROM deadlock_stack AS ds
547
553
JOIN #deadlock_owner_waiter AS dow
548
554
ON dow .owner_id = ds .id
555
+ AND dow .event_date = ds .event_date
549
556
WHERE ds .proc_name <> ' adhoc'
550
557
OPTION ( RECOMPILE );
551
558
END ;
@@ -567,6 +574,7 @@ SET @VersionDate = '20171201';
567
574
FROM #deadlock_stack AS ds
568
575
JOIN #deadlock_process AS dp
569
576
ON dp .id = ds .id
577
+ AND ds .event_date = dp .event_date
570
578
WHERE ds .proc_name <> ' adhoc'
571
579
GROUP BY DB_NAME (dp .database_id ), ds .proc_name
572
580
OPTION (RECOMPILE );
@@ -708,6 +716,7 @@ SET @VersionDate = '20171201';
708
716
deadlocks
709
717
AS ( SELECT dp .event_date ,
710
718
dp .id ,
719
+ dp .victim_id ,
711
720
dp .database_id ,
712
721
dp .log_used ,
713
722
dp .wait_resource ,
@@ -720,7 +729,7 @@ SET @VersionDate = '20171201';
720
729
FROM chopsuey AS c
721
730
WHERE (dp .id = c .id
722
731
OR dp .victim_id = c .id )
723
- AND dp .event_date = c .event_date
732
+ AND dp .event_date = c .event_date
724
733
FOR XML PATH (N ' ' ), TYPE ).value (N ' .[1]' , N ' NVARCHAR(4000)' ),
725
734
1 , 1 , N ' ' )) AS object_names,
726
735
dp .wait_time ,
@@ -736,12 +745,18 @@ SET @VersionDate = '20171201';
736
745
dp .isolation_level ,
737
746
dp .process_xml .value (' (//process/inputbuf/text())[1]' , ' NVARCHAR(MAX)' ) AS inputbuf,
738
747
ROW_NUMBER () OVER ( PARTITION BY dp .event_date , dp .id ORDER BY dp .event_date ) AS dn,
748
+ DENSE_RANK () OVER ( ORDER BY dp .event_date ) AS en,
749
+ ROW_NUMBER () OVER ( PARTITION BY dp .event_date ORDER BY dp .event_date ) - 1 AS qn,
739
750
dp .is_victim ,
740
751
ISNULL (dp .owner_mode , ' -' ) AS owner_mode,
741
752
ISNULL (dp .waiter_mode , ' -' ) AS waiter_mode
742
753
FROM #deadlock_process AS dp )
743
754
SELECT d .event_date ,
744
- DB_NAME (d .database_id ) AS database_name ,
755
+ ' Deadlock #'
756
+ + CONVERT (NVARCHAR (10 ), d .en )
757
+ + ' , Query #' + CASE WHEN d .qn = 0 THEN N ' 1' ELSE CONVERT (NVARCHAR (10 ), d .qn ) END
758
+ AS deadlock_group,
759
+ DB_NAME (d .database_id ) AS database_name ,
745
760
CONVERT (XML , N ' <inputbuf>' + d .inputbuf + N ' </inputbuf>' ) AS query,
746
761
d .object_names ,
747
762
d .isolation_level ,
@@ -760,7 +775,7 @@ SET @VersionDate = '20171201';
760
775
d .transaction_name
761
776
FROM deadlocks AS d
762
777
WHERE d .dn = 1
763
- ORDER BY d .event_date , d . last_batch_started , d . last_tran_started ;
778
+ ORDER BY d .event_date , is_victim DESC
764
779
765
780
766
781
0 commit comments