@@ -154,8 +154,7 @@ SET @VersionDate = '20171201';
154
154
database_name NVARCHAR (256 ),
155
155
object_name NVARCHAR (1000 ),
156
156
finding_group NVARCHAR (100 ),
157
- finding NVARCHAR (4000 ),
158
- query_text XML
157
+ finding NVARCHAR (4000 )
159
158
);
160
159
161
160
@@ -377,74 +376,70 @@ SET @VersionDate = '20171201';
377
376
/* Begin checks based on parsed values*/
378
377
379
378
/* Check 1 is deadlocks by database*/
380
- INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding, query_text )
379
+ INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding )
381
380
SELECT 1 AS check_id,
382
381
DB_NAME (dp .database_id ) AS database_name ,
383
- NULL AS object_name ,
382
+ ' -' AS object_name ,
384
383
' Total database locks' AS finding_group,
385
384
' This database had '
386
385
+ CONVERT (NVARCHAR (20 ), COUNT_BIG (DISTINCT dp .event_date ))
387
- + ' deadlocks.' ,
388
- NULL AS query_text
386
+ + ' deadlocks.'
389
387
FROM #deadlock_process AS dp
390
388
GROUP BY DB_NAME (dp .database_id )
391
389
OPTION ( RECOMPILE );
392
390
393
391
/* Check 2 is deadlocks by object*/
394
392
395
- INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding, query_text )
393
+ INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding )
396
394
SELECT 2 AS check_id,
397
395
DB_NAME (dow .database_id ) AS database_name ,
398
396
dow .object_name AS object_name ,
399
397
' Total object deadlocks' AS finding_group,
400
398
' This object was involved in '
401
399
+ CONVERT (NVARCHAR (20 ), COUNT_BIG (DISTINCT dow .object_name ))
402
- + ' deadlock(s).' ,
403
- NULL AS query_text
400
+ + ' deadlock(s).'
404
401
FROM #deadlock_owner_waiter AS dow
405
402
GROUP BY DB_NAME (dow .database_id ), dow .object_name
406
403
OPTION ( RECOMPILE );
407
404
408
405
409
406
/* Check 3 looks for Serializable locking*/
410
- INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding, query_text )
407
+ INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding )
411
408
SELECT 3 AS check_id,
412
409
DB_NAME (dp .database_id ) AS database_name ,
413
- NULL AS object_name ,
410
+ ' -' AS object_name ,
414
411
' Serializable locking' AS finding_group,
415
412
' This database has had ' +
416
413
CONVERT (NVARCHAR (20 ), COUNT_BIG (* )) +
417
414
' instances of serializable deadlocks.'
418
- AS finding,
419
- NULL AS query_text
415
+ AS finding
420
416
FROM #deadlock_process AS dp
421
417
WHERE dp .isolation_level LIKE ' serializable%'
422
418
GROUP BY DB_NAME (dp .database_id )
423
419
OPTION ( RECOMPILE );
424
420
425
421
426
422
/* Check 4 looks for Repeatable Read locking*/
427
- INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding, query_text )
423
+ INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding )
428
424
SELECT 4 AS check_id,
429
425
DB_NAME (dp .database_id ) AS database_name ,
430
- NULL AS object_name ,
426
+ ' -' AS object_name ,
431
427
' Repeatable Read locking' AS finding_group,
432
428
' This database has had ' +
433
429
CONVERT (NVARCHAR (20 ), COUNT_BIG (* )) +
434
430
' instances of repeatable read deadlocks.'
435
- AS finding,
436
- NULL AS query_text
431
+ AS finding
437
432
FROM #deadlock_process AS dp
438
433
WHERE dp .isolation_level LIKE ' repeatable read%'
439
434
GROUP BY DB_NAME (dp .database_id )
440
435
OPTION ( RECOMPILE );
441
436
442
437
443
438
/* Check 5 breaks down app, host, and login information*/
444
- INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding, query_text )
439
+ INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding )
445
440
SELECT 5 AS check_id,
446
441
DB_NAME (dp .database_id ) AS database_name ,
447
- NULL AS object_name ,
442
+ ' -' AS object_name ,
448
443
' Login, App, and Host locking' AS finding_group,
449
444
' This database has had ' +
450
445
CONVERT (NVARCHAR (20 ), COUNT_BIG (DISTINCT dp .id )) +
@@ -454,8 +449,7 @@ SET @VersionDate = '20171201';
454
449
ISNULL (dp .client_app , ' UNKNOWN' ) +
455
450
' on host ' +
456
451
ISNULL (dp .host_name , ' UNKNOWN' )
457
- AS finding,
458
- NULL AS query_text
452
+ AS finding
459
453
FROM #deadlock_process AS dp
460
454
GROUP BY DB_NAME (dp .database_id ), dp .login_name , dp .client_app , dp .host_name
461
455
OPTION ( RECOMPILE );
@@ -472,7 +466,7 @@ SET @VersionDate = '20171201';
472
466
ON dp .id = dow .owner_id
473
467
GROUP BY DB_NAME (dp .database_id ), SUBSTRING (dp .wait_resource , 1 , CHARINDEX (' :' , dp .wait_resource ) - 1 ), dow .object_name
474
468
)
475
- INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding, query_text )
469
+ INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding )
476
470
SELECT DISTINCT 6 AS check_id,
477
471
lt .database_name ,
478
472
lt .object_name ,
@@ -483,14 +477,13 @@ SET @VersionDate = '20171201';
483
477
WHERE lt2 .database_name = lt .database_name
484
478
AND lt2 .object_name = lt .object_name
485
479
FOR XML PATH (N ' ' ), TYPE ).value (N ' .[1]' , N ' NVARCHAR(MAX)' ), 1 , 1 , N ' ' )
486
- + ' locks' ,
487
- NULL AS query_text
480
+ + ' locks'
488
481
FROM lock_types AS lt
489
482
OPTION ( RECOMPILE );
490
483
491
484
492
485
/* Check 7 gives you more info queries for sp_BlitzCache */
493
- INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding, query_text )
486
+ INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding )
494
487
SELECT DISTINCT 7 AS check_id,
495
488
DB_NAME (dow .database_id ) AS database_name ,
496
489
ds .proc_name AS object_name ,
@@ -502,8 +495,7 @@ SET @VersionDate = '20171201';
502
495
ELSE ' @StoredProcName = ' +
503
496
QUOTENAME (ds .proc_name , ' '' ' )
504
497
END +
505
- ' ;' AS finding,
506
- NULL AS query_text
498
+ ' ;' AS finding
507
499
FROM #deadlock_stack AS ds
508
500
JOIN #deadlock_owner_waiter AS dow
509
501
ON dow .owner_id = ds .id
@@ -519,7 +511,7 @@ SET @VersionDate = '20171201';
519
511
PARSENAME (dow .object_name , 1 ) AS table_name
520
512
FROM #deadlock_owner_waiter AS dow
521
513
)
522
- INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding, query_text )
514
+ INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding )
523
515
SELECT 8 AS check_id,
524
516
bi .database_name ,
525
517
bi .schema_name + ' .' + bi .table_name ,
@@ -528,8 +520,7 @@ SET @VersionDate = '20171201';
528
520
' @DatabaseName = ' + QUOTENAME (bi .database_name , ' '' ' ) +
529
521
' , @SchemaName = ' + QUOTENAME (bi .schema_name , ' '' ' ) +
530
522
' , @TableName = ' + QUOTENAME (bi .table_name , ' '' ' ) +
531
- ' ;' AS finding,
532
- NULL AS query_text
523
+ ' ;' AS finding
533
524
FROM bi
534
525
OPTION ( RECOMPILE );
535
526
@@ -566,16 +557,15 @@ SET @VersionDate = '20171201';
566
557
CONVERT (VARCHAR (20 ), DATEADD (SECOND, (s .wait_time / 1000 ), 0 ), 108 ) AS wait_time_hms
567
558
FROM suey AS s
568
559
)
569
- INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding, query_text )
560
+ INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding )
570
561
SELECT 9 AS check_id,
571
562
cs .database_name ,
572
563
cs .object_name ,
573
564
' Total object deadlock wait time' AS finding_group,
574
565
' This object has had '
575
566
+ CONVERT (VARCHAR (10 ), cs .wait_days )
576
567
+ ' :' + CONVERT (VARCHAR (20 ), cs .wait_time_hms , 108 )
577
- + ' [d/h/m/s] of deadlock wait time.' AS finding,
578
- NULL AS query_text
568
+ + ' [d/h/m/s] of deadlock wait time.' AS finding
579
569
FROM chopsuey AS cs
580
570
WHERE cs .object_name IS NOT NULL
581
571
OPTION ( RECOMPILE );
@@ -587,29 +577,27 @@ SET @VersionDate = '20171201';
587
577
FROM #deadlock_process AS dp
588
578
GROUP BY DB_NAME (dp .database_id )
589
579
)
590
- INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding, query_text )
580
+ INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding )
591
581
SELECT 10 AS check_id,
592
582
wt .database_name ,
593
- NULL AS object_name ,
583
+ ' -' AS object_name ,
594
584
' Total database deadlock wait time' AS finding_group,
595
585
' This database has had '
596
586
+ CONVERT (VARCHAR (10 ), (SUM (DISTINCT wt .total_wait_time_ms ) / 1000 ) / 86400 )
597
587
+ ' :' + CONVERT (VARCHAR (20 ), DATEADD (SECOND, (SUM (DISTINCT wt .total_wait_time_ms ) / 1000 ), 0 ), 108 )
598
- + ' [d/h/m/s] of deadlock wait time.' ,
599
- NULL AS query_text
588
+ + ' [d/h/m/s] of deadlock wait time.'
600
589
FROM wait_time AS wt
601
590
GROUP BY wt .database_name
602
591
OPTION ( RECOMPILE );
603
592
604
593
605
594
/* Thank you goodnight*/
606
- INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding, query_text )
595
+ INSERT #deadlock_findings ( check_id, database_name , object_name , finding_group, finding )
607
596
VALUES ( - 1 ,
608
597
N ' sp_BlitzLock ' + CAST (CONVERT (DATETIME , @VersionDate, 102 ) AS VARCHAR (100 )),
609
598
N ' SQL Server First Responder Kit' ,
610
599
N ' http://FirstResponderKit.org/' ,
611
- N ' To get help or add your own contributions, join us at http://FirstResponderKit.org.'
612
- , NULL );
600
+ N ' To get help or add your own contributions, join us at http://FirstResponderKit.org.' );
613
601
614
602
615
603
WITH deadlocks
@@ -643,8 +631,8 @@ SET @VersionDate = '20171201';
643
631
dp .process_xml .value (' (//process/inputbuf/text())[1]' , ' NVARCHAR(MAX)' ) AS inputbuf,
644
632
ROW_NUMBER () OVER ( PARTITION BY dp .event_date , dp .id ORDER BY dp .event_date ) AS dn,
645
633
dp .is_victim ,
646
- ISNULL (dp .owner_mode , ' N/A ' ) AS owner_mode,
647
- ISNULL (dp .waiter_mode , ' N/A ' ) AS waiter_mode
634
+ ISNULL (dp .owner_mode , ' - ' ) AS owner_mode,
635
+ ISNULL (dp .waiter_mode , ' - ' ) AS waiter_mode
648
636
FROM #deadlock_process AS dp )
649
637
SELECT d .event_date ,
650
638
DB_NAME (d .database_id ) AS database_name ,
@@ -670,7 +658,7 @@ SET @VersionDate = '20171201';
670
658
671
659
672
660
673
- SELECT df .check_id , df .database_name , df .object_name , df .finding_group , df .finding , df . query_text
661
+ SELECT df .check_id , df .database_name , df .object_name , df .finding_group , df .finding
674
662
FROM #deadlock_findings AS df
675
663
ORDER BY df .check_id
676
664
OPTION ( RECOMPILE );
0 commit comments