Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 0f3f1ac

Browse files
Pull early ejects
Screw it
1 parent f6a9724 commit 0f3f1ac

File tree

1 file changed

+22
-58
lines changed

1 file changed

+22
-58
lines changed

‎sp_BlitzLock.sql‎

Lines changed: 22 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ ALTER PROCEDURE dbo.sp_BlitzLock
99
@StartDate DATETIME = '19000101',
1010
@EndDate DATETIME = '99991231',
1111
@ObjectName NVARCHAR(1000) = NULL,
12-
@StoredProcName NVARCHAR(256) = NULL,
12+
@StoredProcName NVARCHAR(1000) = NULL,
1313
@AppName NVARCHAR(256) = NULL,
1414
@HostName NVARCHAR(256) = NULL,
1515
@LoginName NVARCHAR(256) = NULL,
@@ -23,6 +23,7 @@ BEGIN
2323

2424
SET NOCOUNT ON;
2525
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
26+
2627
DECLARE @Version VARCHAR(30);
2728
SET @Version = '1.0';
2829
SET @VersionDate = '20171201';
@@ -48,6 +49,7 @@ SET @VersionDate = '20171201';
4849
The object name has to be fully qualified ''Database.Schema.Table''
4950
5051
@StoredProcName: If you want to search for a single stored proc
52+
The proc name has to be fully qualified ''Database.Schema.Sproc''
5153
5254
@AppName: If you want to filter to a specific application
5355
@@ -70,9 +72,6 @@ SET @VersionDate = '20171201';
7072
https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit/
7173
7274
73-
Parameter explanations:
74-
HOLD YOUR HORSES
75-
7675
MIT License
7776
7877
All other copyright for sp_BlitzLock are held by Brent Ozar Unlimited, 2017.
@@ -171,23 +170,6 @@ SET @VersionDate = '20171201';
171170
ORDER BY xml.deadlock_xml.value('(/event/@timestamp)[1]', 'datetime')
172171
OPTION ( RECOMPILE );
173172

174-
/*Eject early if we don't find anything*/
175-
IF @@ROWCOUNT = 0
176-
BEGIN
177-
SELECT N'WOO-HOO! We couldn''t find any deadlocks for '
178-
+ CONVERT(NVARCHAR(30), @StartDate)
179-
+ ' through '
180-
+ CONVERT(NVARCHAR(30), @EndDate)
181-
+ '!'
182-
AS [Noice],
183-
N'sp_BlitzLock'AS [Proc Name],
184-
N'SQL Server First Responder Kit' AS [FRK],
185-
N'http://FirstResponderKit.org/' AS [URL],
186-
N'To get help or add your own contributions, join us at http://FirstResponderKit.org.' AS [Info];
187-
RETURN;
188-
END;
189-
190-
191173

192174

193175
/*Parse process and input buffer XML*/
@@ -220,23 +202,6 @@ SET @VersionDate = '20171201';
220202
AND (ca.dp.value('@loginname', 'NVARCHAR(256)') = @LoginName OR @LoginName IS NULL)
221203
OPTION ( RECOMPILE );
222204

223-
224-
/*Eject early if we don't find anything*/
225-
IF @@ROWCOUNT = 0
226-
BEGIN
227-
SELECT N'WOO-HOO! We couldn''t find any deadlocks for '
228-
+ CASE WHEN @DatabaseName IS NOT NULL THEN 'Database:' + QUOTENAME(@DatabaseName) + ' ' ELSE '' END
229-
+ CASE WHEN @AppName IS NOT NULL THEN 'Application:' + QUOTENAME(@AppName) + ' ' ELSE '' END
230-
+ CASE WHEN @HostName IS NOT NULL THEN 'Host:' + QUOTENAME(@HostName) + ' ' ELSE '' END
231-
+ CASE WHEN @LoginName IS NOT NULL THEN 'Login:' + QUOTENAME(@LoginName) + ' ' ELSE '' END
232-
+ '!' AS [Noice],
233-
N'sp_BlitzLock'AS [Proc Name],
234-
N'SQL Server First Responder Kit' AS [FRK],
235-
N'http://FirstResponderKit.org/' AS [URL],
236-
N'To get help or add your own contributions, join us at http://FirstResponderKit.org.' AS [Info];
237-
RETURN;
238-
END;
239-
240205

241206

242207
/*Parse execution stack XML*/
@@ -290,17 +255,6 @@ SET @VersionDate = '20171201';
290255
WHERE (ca.dr.value('@objectname', 'NVARCHAR(1000)') = @ObjectName OR @ObjectName IS NULL)
291256
OPTION ( RECOMPILE );
292257

293-
/*Eject early if we don't find anything*/
294-
IF @@ROWCOUNT = 0
295-
BEGIN
296-
SELECT N'WOO-HOO! We couldn''t find any deadlocks for ' + @ObjectName + '!'
297-
AS [Noice],
298-
N'sp_BlitzLock'AS [Proc Name],
299-
N'SQL Server First Responder Kit' AS [FRK],
300-
N'http://FirstResponderKit.org/' AS [URL],
301-
N'To get help or add your own contributions, join us at http://FirstResponderKit.org.' AS [Info];
302-
RETURN;
303-
END;
304258

305259

306260
/*This parses page locks*/
@@ -496,13 +450,23 @@ SET @VersionDate = '20171201';
496450
WITH deadlock_stack AS (
497451
SELECT DISTINCT
498452
ds.id,
499-
ds.sql_handle,
500453
ds.proc_name,
501454
ds.event_date,
502455
PARSENAME(ds.proc_name, 3) AS database_name,
503456
PARSENAME(ds.proc_name, 2) AS schema_name,
504-
PARSENAME(ds.proc_name, 1) AS proc_only_name
505-
FROM #deadlock_stack AS ds
457+
PARSENAME(ds.proc_name, 1) AS proc_only_name,
458+
'''' + STUFF((SELECT DISTINCT N',' + ds2.sql_handle
459+
FROM #deadlock_stack AS ds2
460+
WHERE ds2.id = ds.id
461+
AND ds2.event_date = ds.event_date
462+
FOR XML PATH(N''), TYPE).value(N'.[1]', N'NVARCHAR(MAX)'), 1, 1, N'') + '''' AS sql_handle_csv
463+
FROM #deadlock_stack AS ds
464+
GROUP BY PARSENAME(ds.proc_name, 3),
465+
PARSENAME(ds.proc_name, 2),
466+
PARSENAME(ds.proc_name, 1),
467+
ds.id,
468+
ds.proc_name,
469+
ds.event_date
506470
)
507471
INSERT #deadlock_findings ( check_id, database_name, object_name, finding_group, finding )
508472
SELECT DISTINCT 7 AS check_id,
@@ -511,8 +475,7 @@ SET @VersionDate = '20171201';
511475
'More Info - Query' AS finding_group,
512476
'EXEC sp_BlitzCache ' +
513477
CASE WHEN ds.proc_name = 'adhoc'
514-
THEN ' @OnlySqlHandles = ' +
515-
QUOTENAME(ds.sql_handle, '''')
478+
THEN ' @OnlySqlHandles = ' + sql_handle_csv
516479
ELSE '@StoredProcName = ' +
517480
QUOTENAME(ds.proc_only_name, '''')
518481
END +
@@ -752,15 +715,16 @@ SET @VersionDate = '20171201';
752715
ISNULL(dp.waiter_mode, '-') AS waiter_mode
753716
FROM #deadlock_process AS dp )
754717
SELECT d.event_date,
718+
DB_NAME(d.database_id) AS database_name,
755719
'Deadlock #'
756720
+ CONVERT(NVARCHAR(10), d.en)
757-
+ ', Query #' + CASE WHEN d.qn = 0 THEN N'1' ELSE CONVERT(NVARCHAR(10), d.qn) END
721+
+ ', Query #'
722+
+ CASE WHEN d.qn = 0 THEN N'1' ELSE CONVERT(NVARCHAR(10), d.qn) END
723+
+ CASE WHEN d.is_victim = 1 THEN ' - VICTIM' ELSE '' END
758724
AS deadlock_group,
759-
DB_NAME(d.database_id) AS database_name,
760725
CONVERT(XML, N'<inputbuf>' + d.inputbuf + N'</inputbuf>') AS query,
761726
d.object_names,
762727
d.isolation_level,
763-
d.is_victim,
764728
d.owner_mode,
765729
d.waiter_mode,
766730
d.transaction_count,
@@ -775,7 +739,7 @@ SET @VersionDate = '20171201';
775739
d.transaction_name
776740
FROM deadlocks AS d
777741
WHERE d.dn = 1
778-
ORDER BY d.event_date, is_victim DESC
742+
ORDER BY d.event_date, is_victim DESC;
779743

780744

781745

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /