Skip to content

Commit 3897a21

Browse files
committed
#3711 sp_BlitzLock duplicate rows
Thanks ChatGPT! Closes #3711.
1 parent 51b582d commit 3897a21

File tree

1 file changed

+33
-55
lines changed

1 file changed

+33
-55
lines changed

sp_BlitzLock.sql

Lines changed: 33 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)