Skip to content

Commit 3a823b8

Browse files
committed
Check ID 2 refer DBCC DBINFO data for log backup
1 parent 36c82b4 commit 3a823b8

File tree

1 file changed

+62
-15
lines changed

1 file changed

+62
-15
lines changed

sp_Blitz.sql

Lines changed: 62 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -888,6 +888,40 @@ AS
888888
)
889889
BEGIN
890890

891+
/*
892+
Extract DBCC DBINFO data from the server. This data is used for check 2 using
893+
the dbi_LastLogBackupTime field and check 68 using the dbi_LastKnownGood field.
894+
NB: DBCC DBINFO is not available on AWS RDS databases so if the server is RDS
895+
(which will have previously triggered inserting a checkID 223 record) and at
896+
least one of the relevant checks is not being skipped then we can extract the
897+
dbinfo information.
898+
*/
899+
IF NOT EXISTS ( SELECT 1
900+
FROM #BlitzResults
901+
WHERE CheckID = 223 AND URL = 'https://aws.amazon.com/rds/sqlserver/')
902+
AND (
903+
NOT EXISTS ( SELECT 1
904+
FROM #SkipChecks
905+
WHERE DatabaseName IS NULL AND CheckID = 2 )
906+
OR NOT EXISTS ( SELECT 1
907+
FROM #SkipChecks
908+
WHERE DatabaseName IS NULL AND CheckID = 68 )
909+
)
910+
BEGIN
911+
912+
IF @Debug IN (1, 2) RAISERROR('Extracting DBCC DBINFO data (used in checks 2 and 68).', 0, 1, 68) WITH NOWAIT;
913+
914+
EXEC sp_MSforeachdb N'USE [?];
915+
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
916+
INSERT #DBCCs
917+
(ParentObject,
918+
Object,
919+
Field,
920+
Value)
921+
EXEC (''DBCC DBInfo() With TableResults, NO_INFOMSGS'');
922+
UPDATE #DBCCs SET DbName = N''?'' WHERE DbName IS NULL OPTION (RECOMPILE);';
923+
END
924+
891925
/*
892926
Our very first check! We'll put more comments in this one just to
893927
explain exactly how it works. First, we check to see if we're
@@ -1033,6 +1067,7 @@ AS
10331067
'https://www.brentozar.com/go/biglogs' AS URL ,
10341068
( 'The ' + CAST(CAST((SELECT ((SUM([mf].[size]) * 8.) / 1024.) FROM sys.[master_files] AS [mf] WHERE [mf].[database_id] = d.[database_id] AND [mf].[type_desc] = 'LOG') AS DECIMAL(18,2)) AS VARCHAR(30)) + 'MB log file has not been backed up in the last week.' ) AS Details
10351069
FROM master.sys.databases d
1070+
LEFT JOIN #DBCCs ll On ll.DbName = d.name And ll.Field = 'dbi_LastLogBackupTime'
10361071
WHERE d.recovery_model IN ( 1, 2 )
10371072
AND d.database_id NOT IN ( 2, 3 )
10381073
AND d.source_database_id IS NULL
@@ -1043,12 +1078,23 @@ AS
10431078
DatabaseName
10441079
FROM #SkipChecks
10451080
WHERE CheckID IS NULL OR CheckID = 2)
1046-
AND NOT EXISTS ( SELECT *
1047-
FROM msdb.dbo.backupset b
1048-
WHERE d.name COLLATE SQL_Latin1_General_CP1_CI_AS = b.database_name COLLATE SQL_Latin1_General_CP1_CI_AS
1049-
AND b.type = 'L'
1050-
AND b.backup_finish_date >= DATEADD(dd,
1051-
-7, GETDATE()) );
1081+
AND (
1082+
(
1083+
/* We couldn't get a value from the DBCC DBINFO data so let's check the msdb backup history information */
1084+
[ll].[Value] Is Null
1085+
AND NOT EXISTS ( SELECT *
1086+
FROM msdb.dbo.backupset b
1087+
WHERE d.name COLLATE SQL_Latin1_General_CP1_CI_AS = b.database_name COLLATE SQL_Latin1_General_CP1_CI_AS
1088+
AND b.type = 'L'
1089+
AND b.backup_finish_date >= DATEADD(dd,-7, GETDATE())
1090+
)
1091+
)
1092+
OR
1093+
(
1094+
Convert(datetime,ll.Value) < DATEADD(dd,-7, GETDATE())
1095+
)
1096+
1097+
);
10521098
END;
10531099

10541100
/*
@@ -7286,15 +7332,16 @@ IF @ProductVersionMajor >= 10
72867332

72877333
IF @Debug IN (1, 2) RAISERROR('Running CheckId [%d].', 0, 1, 68) WITH NOWAIT;
72887334

7289-
EXEC sp_MSforeachdb N'USE [?];
7290-
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
7291-
INSERT #DBCCs
7292-
(ParentObject,
7293-
Object,
7294-
Field,
7295-
Value)
7296-
EXEC (''DBCC DBInfo() With TableResults, NO_INFOMSGS'');
7297-
UPDATE #DBCCs SET DbName = N''?'' WHERE DbName IS NULL OPTION (RECOMPILE);';
7335+
/* Removed as populating the #DBCCs table now done in advance as data is uses for multiple checks*/
7336+
--EXEC sp_MSforeachdb N'USE [?];
7337+
--SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
7338+
--INSERT #DBCCs
7339+
-- (ParentObject,
7340+
-- Object,
7341+
-- Field,
7342+
-- Value)
7343+
--EXEC (''DBCC DBInfo() With TableResults, NO_INFOMSGS'');
7344+
--UPDATE #DBCCs SET DbName = N''?'' WHERE DbName IS NULL OPTION (RECOMPILE);';
72987345

72997346
WITH DB2
73007347
AS ( SELECT DISTINCT

0 commit comments

Comments
 (0)