55ALTER 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)
1521AS
22+ BEGIN
23+
1624SET NOCOUNT ON ;
1725SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
1826DECLARE @Version VARCHAR (30 );
1927SET @Version = ' 1.0' ;
2028SET @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