Skip to content

Commit be83a5d

Browse files
authored
Merge pull request BrentOzarULTD#1283 from BrentOzarULTD/Issue_1273_
Add more filtering
2 parents 03b55d4 + 79278e9 commit be83a5d

File tree

1 file changed

+65
-6
lines changed

1 file changed

+65
-6
lines changed

sp_BlitzLock.sql

Lines changed: 65 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,29 @@ GO
55
ALTER PROCEDURE dbo.sp_BlitzLock
66
(
77
@Top INT = 2147483647,
8+
@DatabaseName NVARCHAR(256) = NULL,
89
@StartDate DATETIME = '19000101',
910
@EndDate DATETIME = '99991231',
11+
@ObjectName NVARCHAR(1000) = NULL,
12+
@StoredProcName NVARCHAR(256) = NULL,
13+
@AppName NVARCHAR(256) = NULL,
14+
@HostName NVARCHAR(256) = NULL,
15+
@LoginName NVARCHAR(256) = NULL,
1016
@EventSessionPath VARCHAR(256) = 'xml_deadlock_report',
1117
@Debug BIT = 0,
1218
@Help BIT = 0,
1319
@VersionDate DATETIME = NULL OUTPUT
1420
)
1521
AS
22+
BEGIN
23+
1624
SET NOCOUNT ON;
1725
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
1826
DECLARE @Version VARCHAR(30);
1927
SET @Version = '1.0';
2028
SET @VersionDate = '20171201';
2129

2230

23-
24-
BEGIN
25-
2631
IF @Help = 1 PRINT '
2732
/*
2833
sp_BlitzLock from http://FirstResponderKit.org
@@ -167,9 +172,15 @@ SET @VersionDate = '20171201';
167172
ORDER BY xml.deadlock_xml.value('(/event/@timestamp)[1]', 'datetime')
168173
OPTION ( RECOMPILE );
169174

170-
IF @@ROWCOUNT < 1
175+
/*Eject early if we don't find anything*/
176+
IF @@ROWCOUNT = 0
171177
BEGIN
172-
SELECT N'WOO-HOO! We couldn''t find any deadlocks!' AS [Noice],
178+
SELECT N'WOO-HOO! We couldn''t find any deadlocks for '
179+
+ CONVERT(NVARCHAR(30), @StartDate)
180+
+ ' through '
181+
+ CONVERT(NVARCHAR(30), @EndDate)
182+
+ '!'
183+
AS [Noice],
173184
N'sp_BlitzLock'AS [Proc Name],
174185
N'SQL Server First Responder Kit' AS [FRK],
175186
N'http://FirstResponderKit.org/' AS [URL],
@@ -203,8 +214,30 @@ SET @VersionDate = '20171201';
203214
FROM #deadlock_data AS dd
204215
CROSS APPLY dd.deadlock_xml.nodes('//deadlock/process-list/process') AS ca(dp)
205216
CROSS APPLY dd.deadlock_xml.nodes('//deadlock/process-list/process/inputbuf') AS ca2(ib)
217+
WHERE (ca.dp.value('@currentdb', 'BIGINT') = DB_ID(@DatabaseName) OR @DatabaseName IS NULL)
218+
AND (ca.dp.value('@clientapp', 'NVARCHAR(256)') = @AppName OR @AppName IS NULL)
219+
AND (ca.dp.value('@hostname', 'NVARCHAR(256)') = @HostName OR @HostName IS NULL)
220+
AND (ca.dp.value('@loginname', 'NVARCHAR(256)') = @LoginName OR @LoginName IS NULL)
206221
OPTION ( RECOMPILE );
207222

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+
240+
208241

209242
/*Parse execution stack XML*/
210243
SELECT dp.id,
@@ -213,8 +246,21 @@ SET @VersionDate = '20171201';
213246
INTO #deadlock_stack
214247
FROM #deadlock_process AS dp
215248
CROSS APPLY dp.process_xml.nodes('//executionStack/frame') AS ca(dp)
249+
WHERE (ca.dp.value('@procname', 'NVARCHAR(256)') = @StoredProcName OR @StoredProcName IS NULL)
216250
OPTION ( RECOMPILE );
217251

252+
/*Eject early if we don't find anything*/
253+
IF @@ROWCOUNT = 0
254+
BEGIN
255+
SELECT N'WOO-HOO! We couldn''t find any deadlocks for ' + QUOTENAME(@StoredProcName) + '!'
256+
AS [Noice],
257+
N'sp_BlitzLock'AS [Proc Name],
258+
N'SQL Server First Responder Kit' AS [FRK],
259+
N'http://FirstResponderKit.org/' AS [URL],
260+
N'To get help or add your own contributions, join us at http://FirstResponderKit.org.' AS [Info];
261+
RETURN;
262+
END;
263+
218264

219265
/*Grab the full resource list*/
220266
SELECT ca.dp.query('.') AS resource_xml
@@ -226,7 +272,7 @@ SET @VersionDate = '20171201';
226272

227273
/*This parses object locks*/
228274
SELECT ca.dr.value('@dbid', 'BIGINT') AS database_id,
229-
ca.dr.value('@objectname', 'NVARCHAR(256)') AS object_name,
275+
ca.dr.value('@objectname', 'NVARCHAR(1000)') AS object_name,
230276
ca.dr.value('@mode', 'NVARCHAR(256)') AS lock_mode,
231277
w.l.value('@id', 'NVARCHAR(256)') AS waiter_id,
232278
w.l.value('@mode', 'NVARCHAR(256)') AS waiter_mode,
@@ -237,8 +283,21 @@ SET @VersionDate = '20171201';
237283
CROSS APPLY dr.resource_xml.nodes('//resource-list/objectlock') AS ca(dr)
238284
CROSS APPLY ca.dr.nodes('//waiter-list/waiter') AS w(l)
239285
CROSS APPLY ca.dr.nodes('//owner-list/owner') AS o(l)
286+
WHERE (ca.dr.value('@objectname', 'NVARCHAR(1000)') = @ObjectName OR @ObjectName IS NULL)
240287
OPTION ( RECOMPILE );
241288

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

243302
/*This parses page locks*/
244303
INSERT #deadlock_owner_waiter

0 commit comments

Comments
 (0)