2013-12-09 52 views
-2

我想知道是否有一個簡單的查詢爲msdb從前一天獲取多個數據庫的所有備份失敗(丟失備份,備份未完成等)的報告在服務器上。我沒有能夠找到任何我需要從谷歌搜索或其他論壇,所以任何幫助將大大appriciated。SQL Server的前一天備份失敗msdb的報告

+0

這可能不是一個編程問題,可能更適合serverfault。我會說,無論什麼程序負責進行備份,也應該保留任何失敗的日誌或報告。 – Loopo

回答

1

我認爲沒有辦法找到失敗的備份。有一個名爲backupset的表,但只保存成功的備份而不是失敗的備份。您可以設置一項工作來爲您做備份併發送失敗通知。另一種方法是在sql server errro日誌上轉發失敗的備份。下面是一個查詢,列出成功備份更友好的方式。

-- Most Recent Backups and # of days since ANY type of backup. 

SELECT B.name as Database_Name, ISNULL(STR(ABS(DATEDIFF(day, GetDate(),MAX(backup_finish_date)))), 'NEVER') as DaysSinceLastBackup, 
ISNULL(Convert(char(19), MAX(backup_finish_date), 100), 'NEVER') as LastBackupDate, 
case 
    when type='D' then '** FULL **' 
    when type='I' then 'DIFFERENTIAL' 
    when type='L' then 'LOG' 
end as Backup_Type, 
case 
    when status > 16 then 'Check DB Status' -- Alert that DB might be ReadOnly, Offline etc... 
     else ' ' 
end as 'DB Status' 
FROM master.dbo.sysdatabases B LEFT OUTER JOIN msdb.dbo.backupset A ON A.database_name = B.name --AND A.type = 'D' 
where B.name not like '%skip these%' 
GROUP BY B.name , a.type, status 
ORDER BY B.name , LastBackupDate desc,a.type, status` 
+0

好吧,我認爲,因爲備份總是按照慣例命名爲日期,所以我可能會對其進行反向工程以找到那個日期不存在的備份,謝謝! – Skunny11

+0

是應該工作的。祝你好運。 – johnny