SELECT TOP 100
s.database_name,
m.physical_device_name,
CAST(DATEDIFF(second, s.backup_start_date,
s.backup_finish_date) AS VARCHAR(100)) + ' ' + 'Seconds' TimeTaken,
s.backup_start_date,
CASE s.[type]
WHEN 'D' THEN 'Full'
WHEN 'I' THEN 'Differential'
WHEN 'L' THEN 'Transaction Log'
END AS BackupType,
s.server_name,
s.recovery_model
FROM msdb.dbo.backupset s
INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
WHERE s.database_name = DB_NAME() -- Remove this line for all the database
ORDER BY backup_start_date DESC, backup_finish_date
GO
SELECT Database_Name,
CONVERT( SmallDateTime , MAX(Backup_Finish_Date)) as Last_Backup,
DATEDIFF(d, MAX(Backup_Finish_Date), Getdate()) as Days_Since_Last
FROM MSDB.dbo.BackupSet
WHERE Type = 'd'
GROUP BY Database_Name
是的,只要历史数据仍在 msdb 数据库中。以下代码块将获取您最近的 100 个备份,包括完整备份、差异备份和日志备份。
尝试这个:
如果您想使用 Powershell,这就是我所拥有的。如果您的计算机上有 SQL 2008 SMO DDL,请使用第 1 行。如果您有 SQL 2005 SMO 删除第 1 行,请删除 # 并使用第 2 行。如果所有其他方法都失败,请删除第 1 行和第 2 行,请删除 # 并使用第 3 行. 将 Your_Server_Name_Here 替换为您正在检查的服务器的名称。