@@ -2647,56 +2647,37 @@ BEGIN
26472647 lock_types AS
26482648 (
26492649 SELECT
2650- database_name =
2651- dp .database_name ,
2650+ dp .database_name ,
26522651 dow .object_name ,
26532652 lock =
26542653 CASE
26552654 WHEN CHARINDEX(N' :' , dp .wait_resource ) > 0
2656- THEN SUBSTRING
2657- (
2658- dp .wait_resource ,
2659- 1 ,
2660- CHARINDEX(N' :' , dp .wait_resource ) - 1
2661- )
2655+ THEN LEFT(dp .wait_resource , CHARINDEX(N' :' , dp .wait_resource ) - 1 )
26622656 ELSE dp .wait_resource
26632657 END,
2664- lock_count =
2665- CONVERT
2666- (
2667- nvarchar(20 ),
2668- COUNT_BIG(DISTINCT dp .event_date )
2669- )
2658+ lock_count = CONVERT (nvarchar(20 ), COUNT_BIG(DISTINCT dp .event_date ))
26702659 FROM # deadlock_process AS dp
26712660 JOIN # deadlock_owner_waiter AS dow
2672- ON (dp .id = dow .owner_id
2673- OR dp .victim_id = dow .waiter_id )
2674- AND dp .event_date = dow .event_date
2675- WHERE 1 = 1
2676- AND (dp .database_name = @DatabaseName OR @DatabaseName IS NULL )
2677- AND (dp .event_date >= @StartDate OR @StartDate IS NULL )
2678- AND (dp .event_date < @EndDate OR @EndDate IS NULL )
2679- AND (dp .client_app = @AppName OR @AppName IS NULL )
2680- AND (dp .host_name = @HostName OR @HostName IS NULL )
2681- AND (dp .login_name = @LoginName OR @LoginName IS NULL )
2682- AND (dow .object_name = @ObjectName OR @ObjectName IS NULL )
2683- AND dow .object_name IS NOT NULL
2661+ ON (dp .id = dow .owner_id OR dp .victim_id = dow .waiter_id )
2662+ AND dp .event_date = dow .event_date
2663+ WHERE (dp .database_name = @DatabaseName OR @DatabaseName IS NULL )
2664+ AND (dp .event_date >= @StartDate OR @StartDate IS NULL )
2665+ AND (dp .event_date < @EndDate OR @EndDate IS NULL )
2666+ AND (dp .client_app = @AppName OR @AppName IS NULL )
2667+ AND (dp .host_name = @HostName OR @HostName IS NULL )
2668+ AND (dp .login_name = @LoginName OR @LoginName IS NULL )
2669+ AND (dow .object_name = @ObjectName OR @ObjectName IS NULL )
2670+ AND dow .object_name IS NOT NULL
26842671 GROUP BY
26852672 dp .database_name ,
2673+ dow .object_name ,
26862674 CASE
26872675 WHEN CHARINDEX(N' :' , dp .wait_resource ) > 0
2688- THEN SUBSTRING
2689- (
2690- dp .wait_resource ,
2691- 1 ,
2692- CHARINDEX(N' :' , dp .wait_resource ) - 1
2693- )
2676+ THEN LEFT(dp .wait_resource , CHARINDEX(N' :' , dp .wait_resource ) - 1 )
26942677 ELSE dp .wait_resource
2695- END,
2696- dow .object_name
2678+ END
26972679 )
2698- INSERT
2699- # deadlock_findings WITH(TABLOCKX)
2680+ INSERT # deadlock_findings WITH (TABLOCKX)
27002681 (
27012682 check_id,
27022683 database_name,
@@ -2706,36 +2687,33 @@ BEGIN
27062687 sort_order
27072688 )
27082689 SELECT
2709- check_id = 7 ,
2690+ check_id = 7 ,
27102691 lt .database_name ,
27112692 lt .object_name ,
27122693 finding_group = N' Types of locks by object' ,
2713- finding =
2694+ finding =
27142695 N' This object has had ' +
2715- STUFF
2716- (
2696+ STUFF(
27172697 (
27182698 SELECT
2719- N' , ' +
2720- lt2 .lock_count +
2721- N' ' +
2722- lt2 .lock
2699+ N' , ' + lt2 .lock_count + N' ' + lt2 .lock
27232700 FROM lock_types AS lt2
27242701 WHERE lt2 .database_name = lt .database_name
2725- AND lt2 .object_name = lt .object_name
2726- FOR XML
2727- PATH (N' ' ),
2728- TYPE
2729- ).value(N' .[1]' , N' nvarchar(MAX)' ),
2730- 1 ,
2731- 1 ,
2732- N' '
2702+ AND lt2 .object_name = lt .object_name
2703+ FOR XML PATH (' ' ), TYPE
2704+ ).value(' .' , ' nvarchar(max)' ),
2705+ 1 , 2 , N' '
27332706 ) + N' locks.' ,
27342707 sort_order =
2735- ROW_NUMBER()
2736- OVER (ORDER BY CONVERT (bigint , lt .lock_count ) DESC )
2708+ ROW_NUMBER() OVER (
2709+ ORDER BY
2710+ MAX (CONVERT (bigint , lt .lock_count )) DESC
2711+ )
27372712 FROM lock_types AS lt
2738- OPTION(RECOMPILE);
2713+ GROUP BY
2714+ lt .database_name ,
2715+ lt .object_name
2716+ OPTION (RECOMPILE);
27392717
27402718 RAISERROR(' Finished at %s' , 0 , 1 , @d) WITH NOWAIT;
27412719
0 commit comments