We walk in the dark places no others will enterWe stand on the bridge and no one may pass
declare @server_id int declare @sql nvarchar(max)set @server_id = -1while exists (select top 1 1 from sys.servers where server_id > @server_id)begin select top 1 @server_id = server_id, @sql = QUOTENAME(name) from sys.servers where server_id > @server_id order by server_id set @sql = 'select * from ( select QUOTENAME(bs.server_name) + ''.'' + QUOTENAME(bs.database_name) DBName , bs.type BackupTypeCode --included since it looks like this field could be null, so not restricted to the lookup values , t.descrptn BackupType , COALESCE(Convert(nvarchar(20), backup_finish_date, 113),''Backup Not Taken'') FinishDate , COALESCE(Convert(nvarchar(20), backup_size, 101),''NA'') Size , COALESCE(Convert(nvarchar(20), compressed_backup_size, 101),''NA'') CompressedSize , COALESCE(Convert(nvarchar(20), backup_set_id, 101),''NA'') SetID , name BackupName , ROW_NUMBER() over (partition by bs.database_name, bs.type order by bs.backup_start_date desc) r from ' + @sql + '.msdb.dbo.backupset bs left outer join ( select ''D'' id, ''Database'' descrptn union select ''I'' ,''Differential database'' union select ''L'' ,''Log'' union select ''F'' ,''File or filegroup'' union select ''G'' ,''Differential file'' union select ''P'' ,''Partial'' union select ''Q'' ,''Differential partial'' ) t on bs.type = t.id ) x where r = 1 order by DBName, BackupTypeCode ' exec (@sql) --you could insert to a temp table / something like that to make use of the results later end