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 79278e9

Browse files
Add more filtering
Database name Object name Stored procedure name App name Host name Login name
1 parent 03b55d4 commit 79278e9

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)

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