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 6b9ee0d

Browse files
Merge pull request BrentOzarULTD#1288 from BrentOzarULTD/Issue_1285_Redux
Simplify reporting
2 parents bdca254 + d623b7c commit 6b9ee0d

File tree

1 file changed

+50
-106
lines changed

1 file changed

+50
-106
lines changed

‎sp_BlitzLock.sql‎

Lines changed: 50 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ SET @VersionDate = '20171201';
208208
ca.dp.value('@hostname', 'NVARCHAR(256)') AS host_name,
209209
ca.dp.value('@loginname', 'NVARCHAR(256)') AS login_name,
210210
ca.dp.value('@isolationlevel', 'NVARCHAR(256)') AS isolation_level,
211-
CONVERT(NVARCHAR(MAX), ca2.ib.query('.')) AS input_buffer,
211+
ca2.ib.query('.') AS input_buffer,
212212
ca.dp.query('.') AS process_xml
213213
INTO #deadlock_process
214214
FROM #deadlock_data AS dd
@@ -533,112 +533,56 @@ SET @VersionDate = '20171201';
533533
INSERT #deadlock_findings ( check_id, database_name, object_name, finding_group, finding, query_text )
534534
VALUES ( 0, N'sp_BlitzLock', N'SQL Server First Responder Kit', N'http://FirstResponderKit.org/', N'To get help or add your own contributions, join us at http://FirstResponderKit.org.', NULL );
535535

536-
537536

538-
WITH deadlock_owner_waiter AS (
539-
SELECT DISTINCT database_id, object_name, lock_mode, waiter_id, waiter_mode, owner_id, owner_mode
540-
FROM #deadlock_owner_waiter
541-
)
542-
SELECT CONVERT(XML,
543-
N'<Clickme> '
544-
+ NCHAR(10)
545-
+ N'Event Date: '
546-
+ CONVERT(NVARCHAR(30), CONVERT(DATETIME, owner.event_date))
547-
+ NCHAR(10)
548-
+ N'Owner Information '
549-
+ NCHAR(10)
550-
+ N'=================='
551-
+ NCHAR(10)
552-
+ N' Owner Process: '
553-
+ QUOTENAME(SUBSTRING(dow.owner_id, 8, 128))
554-
+ NCHAR(10)
555-
+ N' Owner Login: '
556-
+ QUOTENAME(owner.login_name)
557-
+ NCHAR(10)
558-
+ N' Owner Lock Type: '
559-
+ QUOTENAME(dow.owner_mode)
560-
+ NCHAR(10)
561-
+ N' Owner Object(s): '
562-
+ STUFF((SELECT DISTINCT N', ' + QUOTENAME(ISNULL(dow2.object_name, N'')) AS object_name
563-
FROM #deadlock_owner_waiter AS dow2
564-
WHERE dow.owner_id = dow2.owner_id
565-
FOR XML PATH(N''), TYPE ).value(N'.[1]', N'NVARCHAR(4000)'), 1, 2, N'')
566-
+ NCHAR(10)
567-
+ N' Owner Isolation level: '
568-
+ QUOTENAME(owner.isolation_level)
569-
+ NCHAR(10)
570-
+ N' Owner Transaction: '
571-
+ QUOTENAME(owner.transaction_name)
572-
+ NCHAR(10)
573-
+ N' Owner Transaction Count: '
574-
+ QUOTENAME(owner.transaction_count)
575-
+ NCHAR(10)
576-
+ N' Owner Application: '
577-
+ QUOTENAME(owner.client_app)
578-
+ NCHAR(10)
579-
+ N' Owner Host Name: '
580-
+ QUOTENAME(owner.host_name)
581-
582-
+ NCHAR(10)
583-
+ NCHAR(10)
584-
585-
+ N'Victim Information '
586-
+ NCHAR(10)
587-
+ N'=================='
588-
+ NCHAR(10)
589-
+ N' Victim Process: '
590-
+ QUOTENAME(SUBSTRING(dow.waiter_id, 8, 128))
591-
+ NCHAR(10)
592-
+ N' Victim Login '
593-
+ QUOTENAME(waiter.login_name)
594-
+ NCHAR(10)
595-
+ N' Victim Lock Type: '
596-
+ QUOTENAME(dow.waiter_mode)
597-
+ NCHAR(10)
598-
+ N' Victim Object(s): '
599-
+ STUFF((SELECT DISTINCT N', ' + QUOTENAME(ISNULL(dow2.object_name, N'')) AS object_name
600-
FROM #deadlock_owner_waiter AS dow2
601-
WHERE dow.waiter_id = dow2.waiter_id
602-
FOR XML PATH(N''), TYPE ).value(N'.[1]', N'NVARCHAR(4000)'), 1, 1, N'')
603-
+ NCHAR(10)
604-
+ N' Victim Isolation level: '
605-
+ QUOTENAME(waiter.isolation_level)
606-
+ NCHAR(10)
607-
+ N' Victim Transaction: '
608-
+ QUOTENAME(waiter.transaction_name)
609-
+ NCHAR(10)
610-
+ N' Victim Transaction Count: '
611-
+ QUOTENAME(waiter.transaction_count)
612-
+ NCHAR(10)
613-
+ N' Victim Application: '
614-
+ QUOTENAME(waiter.client_app)
615-
+ NCHAR(10)
616-
+ N' Owner Host Name: '
617-
+ QUOTENAME(owner.host_name)
618-
619-
+ NCHAR(10)
620-
+ N'</Clickme> '
621-
)
622-
AS [deadlock_story],
623-
CONVERT(XML, STUFF((SELECT DISTINCT NCHAR(10) + ISNULL(dp2.input_buffer, N'') AS object_name
624-
FROM #deadlock_process AS dp2
625-
WHERE dow.owner_id = dp2.id
626-
FOR XML PATH(N''), TYPE ).value(N'.[1]', N'NVARCHAR(4000)'), 1, 1, N'')) AS 'owner_query',
627-
628-
CONVERT(XML, STUFF((SELECT DISTINCT NCHAR(10) + ISNULL(dp2.input_buffer, N'') AS object_name
629-
FROM #deadlock_process AS dp2
630-
WHERE dow.waiter_id = dp2.id
631-
FOR XML PATH(N''), TYPE ).value(N'.[1]', N'NVARCHAR(4000)'), 1, 1, N'')) AS 'victim_query'
632-
FROM deadlock_owner_waiter AS dow
633-
JOIN (SELECT TOP 1 *
634-
FROM #deadlock_process AS dp) AS owner
635-
ON owner.id = dow.owner_id
636-
--AND dow.waiter_id = owner.id
637-
JOIN (SELECT TOP 1 *
638-
FROM #deadlock_process AS dp) AS waiter
639-
ON waiter.id = dow.owner_id
640-
--AND dow.owner_id = waiter.id
641-
OPTION ( RECOMPILE );
537+
WITH deadlocks
538+
AS ( SELECT dp.event_date,
539+
dp.id,
540+
dp.database_id,
541+
dp.log_used,
542+
dp.wait_resource,
543+
CONVERT(
544+
XML,
545+
STUFF(( SELECT DISTINCT NCHAR(10)
546+
+ N' <objects>'
547+
+ ISNULL(dow.object_name, N'')
548+
+ N'</objects> ' AS object_name
549+
FROM #deadlock_owner_waiter AS dow
550+
WHERE dp.id = dow.owner_id
551+
OR dp.id = dow.waiter_id
552+
FOR XML PATH(N''), TYPE ).value(N'.[1]', N'NVARCHAR(4000)'),
553+
1, 1, N'')) AS object_name,
554+
dp.wait_time,
555+
dp.transaction_name,
556+
dp.last_tran_started,
557+
dp.last_batch_started,
558+
dp.last_batch_completed,
559+
dp.lock_mode,
560+
dp.transaction_count,
561+
dp.client_app,
562+
dp.host_name,
563+
dp.login_name,
564+
dp.isolation_level,
565+
dp.process_xml.value('(//process/inputbuf/text())[1]', 'NVARCHAR(MAX)') AS inputbuf,
566+
ROW_NUMBER() OVER ( PARTITION BY dp.event_date, dp.id ORDER BY dp.event_date ) AS n
567+
FROM #deadlock_process AS dp )
568+
SELECT N'Deadlock #' + CONVERT(NVARCHAR(10), d.n) AS deadlock_number,
569+
d.event_date,
570+
DB_NAME(d.database_id) AS database_name,
571+
CONVERT(XML, N'<inputbuf>' + d.inputbuf + N'</inputbuf>') AS query,
572+
d.object_name,
573+
d.isolation_level,
574+
d.transaction_count,
575+
d.login_name,
576+
d.host_name,
577+
d.client_app,
578+
d.wait_time,
579+
d.transaction_name,
580+
d.last_tran_started,
581+
d.last_batch_started,
582+
d.last_batch_completed,
583+
d.log_used
584+
FROM deadlocks AS d
585+
WHERE d.n = 1;
642586

643587

644588

0 commit comments

Comments
(0)

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