@@ -566,37 +566,17 @@ SET @VersionDate = '20171201';
566
566
OPTION ( RECOMPILE );
567
567
568
568
/* Check 10 gets total deadlock wait time per object*/
569
- WITH chop AS (
570
- SELECT SUBSTRING (dp .wait_resource ,
571
- CHARINDEX (' :' , dp .wait_resource , CHARINDEX (' :' , dp .wait_resource )) + 2 ,
572
- LEN (dp .wait_resource )
573
- ) AS chopped,
574
- dp .database_id ,
575
- SUM (dp .wait_time ) AS wait_time
576
- FROM #deadlock_process AS dp
577
- GROUP BY dp .wait_resource , dp .database_id
578
- ),
579
- suey AS (
580
- SELECT SUBSTRING (c .chopped ,
581
- CHARINDEX (' :' , c .chopped ) + 1 ,
582
- CHARINDEX (' :' , c .chopped , CHARINDEX (' :' , c .chopped ) + 1 )
583
- - 1 - CHARINDEX (' :' , c .chopped )
584
- ) AS obj_id,
585
- c .database_id ,
586
- c .wait_time
587
- FROM chop AS c
588
- ),
589
- chopsuey AS (
590
- SELECT * ,
591
- DB_NAME (s .database_id ) AS database_name ,
592
- OBJECT_SCHEMA_NAME (s .obj_id , s .database_id ) AS sch_name,
593
- OBJECT_NAME (s .obj_id , s .database_id ) AS tbl_name,
594
- OBJECT_SCHEMA_NAME (s .obj_id , s .database_id )
595
- + N ' .'
596
- + OBJECT_NAME (s .obj_id , s .database_id ) AS object_name ,
597
- CONVERT (VARCHAR (10 ), (s .wait_time / 1000 ) / 86400 ) AS wait_days,
598
- CONVERT (VARCHAR (20 ), DATEADD (SECOND, (s .wait_time / 1000 ), 0 ), 108 ) AS wait_time_hms
599
- FROM suey AS s
569
+ WITH chopsuey AS (
570
+ SELECT DISTINCT
571
+ PARSENAME (dow .object_name , 3 ) AS database_name ,
572
+ dow .object_name ,
573
+ CONVERT (VARCHAR (10 ), (SUM (DISTINCT dp .wait_time ) / 1000 ) / 86400 ) AS wait_days,
574
+ CONVERT (VARCHAR (20 ), DATEADD (SECOND, (SUM (DISTINCT dp .wait_time ) / 1000 ), 0 ), 108 ) AS wait_time_hms
575
+ FROM #deadlock_owner_waiter AS dow
576
+ JOIN #deadlock_process AS dp
577
+ ON (dp .id = dow .owner_id OR dp .victim_id = dow .waiter_id )
578
+ AND dp .event_date = dow .event_date
579
+ GROUP BY PARSENAME (dow .object_name , 3 ), dow .object_name
600
580
)
601
581
INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding )
602
582
SELECT 10 AS check_id,
@@ -643,40 +623,8 @@ SET @VersionDate = '20171201';
643
623
644
624
645
625
646
-
647
- WITH chop AS (
648
- SELECT SUBSTRING (dp .wait_resource ,
649
- CHARINDEX (' :' , dp .wait_resource , CHARINDEX (' :' , dp .wait_resource )) + 2 ,
650
- LEN (dp .wait_resource )
651
- ) AS chopped,
652
- dp .id ,
653
- dp .database_id ,
654
- dp .event_date
655
- FROM #deadlock_process AS dp
656
- GROUP BY dp .id , dp .database_id , dp .wait_resource , dp .event_date
657
- ),
658
- suey AS (
659
- SELECT SUBSTRING (c .chopped ,
660
- CHARINDEX (' :' , c .chopped ) + 1 ,
661
- CHARINDEX (' :' , c .chopped , CHARINDEX (' :' , c .chopped ) + 1 )
662
- - 1 - CHARINDEX (' :' , c .chopped )
663
- ) AS obj_id,
664
- c .id ,
665
- c .database_id ,
666
- c .event_date
667
- FROM chop AS c
668
- ),
669
- chopsuey AS (
670
- SELECT * ,
671
- DB_NAME (s .database_id ) AS database_name ,
672
- OBJECT_SCHEMA_NAME (s .obj_id , s .database_id ) AS sch_name,
673
- OBJECT_NAME (s .obj_id , s .database_id ) AS tbl_name,
674
- OBJECT_SCHEMA_NAME (s .obj_id , s .database_id )
675
- + N ' .'
676
- + OBJECT_NAME (s .obj_id , s .database_id ) AS object_name
677
- FROM suey AS s
678
- ),
679
- deadlocks
626
+ /* Results*/
627
+ WITH deadlocks
680
628
AS ( SELECT dp .event_date ,
681
629
dp .id ,
682
630
dp .victim_id ,
@@ -689,9 +637,9 @@ SET @VersionDate = '20171201';
689
637
+ N ' <object>'
690
638
+ ISNULL (c .object_name , N ' ' )
691
639
+ N ' </object> ' AS object_name
692
- FROM chopsuey AS c
693
- WHERE (dp .id = c .id
694
- OR dp .victim_id = c .id )
640
+ FROM #deadlock_owner_waiter AS c
641
+ WHERE (dp .id = c .owner_id
642
+ OR dp .victim_id = c .waiter_id )
695
643
AND dp .event_date = c .event_date
696
644
FOR XML PATH (N ' ' ), TYPE ).value (N ' .[1]' , N ' NVARCHAR(4000)' ),
697
645
1 , 1 , N ' ' )) AS object_names,
0 commit comments