@@ -354,12 +354,25 @@ SET @VersionDate = '20171201';
354
354
355
355
/* Add some nonsense*/
356
356
ALTER TABLE #deadlock_process
357
- ADD owner_objects NVARCHAR (4000 ),
358
- waiter_objects NVARCHAR (4000 ),
359
- waiter_mode NVARCHAR (256 ),
357
+ ADD waiter_mode NVARCHAR (256 ),
360
358
owner_mode NVARCHAR (256 ),
361
359
is_victim AS CONVERT (BIT , CASE WHEN id = victim_id THEN 1 ELSE 0 END );
362
360
361
+ /* Update some nonsense*/
362
+ UPDATE dp
363
+ SET dp .owner_mode = dow .owner_mode
364
+ FROM #deadlock_process AS dp
365
+ JOIN #deadlock_owner_waiter AS dow
366
+ ON dp .id = dow .owner_id
367
+ WHERE dp .is_victim = 0
368
+
369
+ UPDATE dp
370
+ SET dp .waiter_mode = dow .waiter_mode
371
+ FROM #deadlock_process AS dp
372
+ JOIN #deadlock_owner_waiter AS dow
373
+ ON dp .victim_id = dow .waiter_id
374
+ WHERE dp .is_victim = 1
375
+
363
376
364
377
/* Begin checks based on parsed values*/
365
378
@@ -436,11 +449,11 @@ SET @VersionDate = '20171201';
436
449
' This database has had ' +
437
450
CONVERT (NVARCHAR (20 ), COUNT_BIG (DISTINCT dp .id )) +
438
451
' instances of deadlocks involving the login ' +
439
- dp .login_name +
452
+ ISNULL ( dp .login_name , ' UNKNOWN' ) +
440
453
' from the application ' +
441
- dp .client_app +
454
+ ISNULL ( dp .client_app , ' UNKNOWN' ) +
442
455
' on host ' +
443
- dp .host_name
456
+ ISNULL ( dp .host_name , ' UNKNOWN' )
444
457
AS finding,
445
458
NULL AS query_text
446
459
FROM #deadlock_process AS dp
@@ -561,9 +574,10 @@ SET @VersionDate = '20171201';
561
574
' This object has had '
562
575
+ CONVERT (VARCHAR (10 ), cs .wait_days )
563
576
+ ' :' + CONVERT (VARCHAR (20 ), cs .wait_time_hms , 108 )
564
- + ' [d/h/m/s] of deadlock wait time.' ,
577
+ + ' [d/h/m/s] of deadlock wait time.'AS finding ,
565
578
NULL AS query_text
566
579
FROM chopsuey AS cs
580
+ WHERE cs .object_name IS NOT NULL
567
581
OPTION ( RECOMPILE );
568
582
569
583
/* Check 10 gets total deadlock wait time per database*/
@@ -627,13 +641,19 @@ SET @VersionDate = '20171201';
627
641
dp .login_name ,
628
642
dp .isolation_level ,
629
643
dp .process_xml .value (' (//process/inputbuf/text())[1]' , ' NVARCHAR(MAX)' ) AS inputbuf,
630
- ROW_NUMBER () OVER ( PARTITION BY dp .event_date , dp .id ORDER BY dp .event_date ) AS dn
644
+ ROW_NUMBER () OVER ( PARTITION BY dp .event_date , dp .id ORDER BY dp .event_date ) AS dn,
645
+ dp .is_victim ,
646
+ ISNULL (dp .owner_mode , ' N/A' ) AS owner_mode,
647
+ ISNULL (dp .waiter_mode , ' N/A' ) AS waiter_mode
631
648
FROM #deadlock_process AS dp )
632
649
SELECT d .event_date ,
633
650
DB_NAME (d .database_id ) AS database_name ,
634
651
CONVERT (XML , N ' <inputbuf>' + d .inputbuf + N ' </inputbuf>' ) AS query,
635
652
d .object_names ,
636
653
d .isolation_level ,
654
+ d .is_victim ,
655
+ d .owner_mode ,
656
+ d .waiter_mode ,
637
657
d .transaction_count ,
638
658
d .login_name ,
639
659
d .host_name ,
0 commit comments