Skip to content

Commit 9ed96fa

Browse files
committed
for #3959 - added check for backup to NUL device
1 parent c653bfb commit 9ed96fa

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 in the last 30 days, 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 >= DATEADD(DAY, -30, SYSDATETIME())
1119+
GROUP BY bs.database_name' + @crlf;
1120+
SET @StringToExecute += N'UNION' + @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 in the last 30 days, 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 >= DATEADD(DAY, -30, SYSDATETIME())
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;
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)