Skip to content

Commit 69ffdd0

Browse files
authored
Merge pull request BrentOzarULTD#3960 from VladDBA/sp_BlitzBackups-bkp-to-NUL-check
for BrentOzarULTD#3959 - added check for backup to NUL device
2 parents c653bfb + 409bcf4 commit 69ffdd0

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

sp_BlitzBackups.sql

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1101,6 +1101,42 @@ IF @ProductVersionMajor >= 12
11011101
INSERT #Warnings ( CheckId, Priority, DatabaseName, Finding, Warning )
11021102
EXEC sys.sp_executesql @StringToExecute;
11031103

1104+
/*Looking for backups directed at the NUL device.*/
1105+
SET @StringToExecute =N'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;' + @crlf;
1106+
1107+
SET @StringToExecute += N'SELECT
1108+
14 AS CheckId,
1109+
100 AS [Priority],
1110+
bs.database_name AS [Database Name],
1111+
''Backup to NUL device'' AS [Finding],
1112+
''The database '' + QUOTENAME(bs.database_name) + '' has had '' + CONVERT(VARCHAR(10), COUNT(*)) + '' backups to the NUL device, the latest one being on ''+
1113+
CONVERT(NVARCHAR(25),MAX(bs.backup_finish_date),120)+''. These backups do not exist.'' AS [Warning]
1114+
FROM ' + QUOTENAME(@MSDBName) + '.dbo.backupset AS bs
1115+
INNER JOIN ' + QUOTENAME(@MSDBName) + '.dbo.backupmediafamily bmf ON bs.media_set_id = bmf.media_set_id
1116+
WHERE UPPER(bmf.physical_device_name)= N''NUL''
1117+
AND (bs.is_copy_only = 1 OR bs.recovery_model = N''SIMPLE'')
1118+
AND bs.backup_finish_date >= @StartTime
1119+
GROUP BY bs.database_name' + @crlf;
1120+
SET @StringToExecute += N'UNION ALL' + @crlf + N'SELECT
1121+
14 AS CheckId,
1122+
100 AS [Priority],
1123+
bs.database_name AS [Database Name],
1124+
''Backup to NUL device without COPY_ONLY'' AS [Finding],
1125+
''The database '' + QUOTENAME(bs.database_name) + '' is not in SIMPLE recovery model and has had '' + CONVERT(VARCHAR(10), COUNT(*)) + '' backups to the NUL device, the latest one being on ''+
1126+
CONVERT(NVARCHAR(25),MAX(bs.backup_finish_date),120)+''. These backups do not exist and they might mess up your current backup chain.'' AS [Warning]
1127+
FROM ' + QUOTENAME(@MSDBName) + '.dbo.backupset AS bs
1128+
INNER JOIN ' + QUOTENAME(@MSDBName) + '.dbo.backupmediafamily bmf ON bs.media_set_id = bmf.media_set_id
1129+
WHERE UPPER(bmf.physical_device_name)= N''NUL''
1130+
AND bs.is_copy_only = 0 AND bs.recovery_model <> N''SIMPLE''
1131+
AND bs.backup_finish_date >= @StartTime
1132+
GROUP BY bs.database_name' + @crlf;
1133+
1134+
IF @Debug = 1
1135+
PRINT @StringToExecute;
1136+
1137+
INSERT #Warnings ( CheckId, Priority, DatabaseName, Finding, Warning )
1138+
EXEC sys.sp_executesql @StringToExecute, N'@StartTime DATETIME2', @StartTime;
1139+
11041140
RAISERROR('Rules analysis starting on temp tables', 0, 1) WITH NOWAIT;
11051141

11061142
INSERT #Warnings ( CheckId, Priority, DatabaseName, Finding, Warning )

0 commit comments

Comments
 (0)