2013-12-09 53 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