The last report (report 4) must be wrong, backup file names are not recorded in sysaltfiles
-- REPORT 4: POTENTIAL SPACE SAVING (DETAILED) REPORT (FOR .BAK/.UBAK FILES), FROM BIGGEST TO SMALLEST
select DriveLetter, 'FileName' = REPLACE(FilePath + '\' + [FileName], ':\\', ':\'), FileSizeInMB, FileSizeInGB
from #Files
where FilePath + '\' + FileName not in (select filename from master.dbo.sysaltfiles)
and right(FileName,3) = 'bak'
and FileSizeInMB > 0 -- YOU CAN STIPULATE YOU ARE LOOKING FOR FILES LARGER THAN X MB
order by FileSizeInMB desc, REPLACE(FilePath + '\' + [FileName], ':\\', ':\') asc
I reckon replace the code with (seems to do the job)
--REPORT 4: POTENTIAL SPACE SAVING (DETAILED) REPORT (FOR .BAK/.UBAK FILES), FROM BIGGEST TO SMALLEST
select DriveLetter, 'FileName' = REPLACE(FilePath + '\' + [FileName], ':\\', ':\'), FilePath,[FileName], FileSizeInMB, FileSizeInGB
from #Files [/b]where REPLACE(FilePath + '\' + [FileName], ':\\', ':\')
not in (SELECT
physical_device_name
FROM
master..sysdatabases DB
JOIN
msdb..BACKUPSET BS
ON DB.name = BS.database_name
JOIN msdb..backupmediaset MS
ON
BS.media_set_id = MS.media_set_id
JOIN msdb..backupmediafamily MF
ON
BS.media_set_id = MF.media_set_id
JOIN
(
select max(backup_set_id)as backup_set_id, database_name
FROM msdb.dbo.backupset BS
JOIN msdb.dbo.backupmediaset MS
ON
BS.media_set_id = MS.media_set_id
JOIN msdb.dbo.backupmediafamily MF
ON
BS.media_set_id = MF.media_set_id
and type = 'D'
GROUP BY database_name
) MaxBackup
ON
BS.backup_set_id >= MaxBackup.backup_set_id
and bs.database_name = MaxBackup.database_name)
and right(FileName,3) = 'bak'
and FileSizeInMB > 0 -- YOU CAN STIPULATE YOU ARE LOOKING FOR FILES LARGER THAN X MB
order by FileSizeInMB desc, REPLACE(FilePath + '\' + [FileName], ':\\', ':\') asc [/b]