Często zachodzi potrzeba kontroli ostatnio wykonanych backupów baz danych, a w szczególności kontrola backupów starszych niż x dni w podziale na backupy full, diff i logów.
Poniżej przedstawiam skrypt wyciągający te informacje. Parametry maksymalnych czasów podajemy w godzinach. Oczywiście na liście będą wyłącznie bazy, które miały wykonany chociaż jeden backup.
02 | @maxOldBackupFull int = 7*24 |
03 | ,@maxOldBackupDiff int = 24 |
04 | ,@maxOldBackupLog int = 1 |
13 | ,rank() over (Partition by server, database_name order by last_db_backup_date) rank |
16 | CONVERT ( CHAR (100), SERVERPROPERTY( 'Servername' )) AS Server, |
17 | msdb.dbo.backupset.database_name, |
18 | msdb.dbo.backupset.type, |
19 | MAX (msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date, |
20 | Case msdb.dbo.backupset.type |
21 | when 'D' Then @maxOldBackupFull |
22 | when 'I' Then @maxOldBackupDiff |
23 | when 'L' Then @maxOldBackupLog |
25 | DATEDIFF(hh, MAX (msdb.dbo.backupset.backup_finish_date), GETDATE()) AS BackupAge_Hours |
26 | FROM msdb.dbo.backupset |
27 | WHERE msdb.dbo.backupset.type in ( 'D' , 'I' , 'L' ) |
28 | and msdb.dbo.backupset. name is NOT NULL |
29 | GROUP BY msdb.dbo.backupset.database_name |
30 | , msdb.dbo.backupset.type |
33 | Where BackupAge_Hours>maxOldBackup |