@@ -566,37 +566,17 @@ SET @VersionDate = '20171201';
566566 OPTION ( RECOMPILE );
567567
568568 /* 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
600580 )
601581 INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding )
602582 SELECT 10 AS check_id,
@@ -643,40 +623,8 @@ SET @VersionDate = '20171201';
643623
644624
645625
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
680628 AS ( SELECT dp .event_date ,
681629 dp .id ,
682630 dp .victim_id ,
@@ -689,9 +637,9 @@ SET @VersionDate = '20171201';
689637 + N ' <object>'
690638 + ISNULL (c .object_name , N ' ' )
691639 + 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 )
695643 AND dp .event_date = c .event_date
696644 FOR XML PATH (N ' ' ), TYPE ).value (N ' .[1]' , N ' NVARCHAR(4000)' ),
697645 1 , 1 , N ' ' )) AS object_names,
0 commit comments