是否有一种方法可以确定msdb.dbo.backupset记录是备份还是还原?
我们正在编写一个用于存档备份的应用程序。 为了确定是否有新的备份,我们检查了msdb.dbo.backupset,但是此表包含备份和还原的记录。
要过滤掉还原备份集,我们只显示restorehistory表中不存在backup_set_id的记录。
问题是,如果我们备份数据库,然后将其还原到同一服务器,则该备份将被视为还原而未显示。
我已经考虑过,如果backupset.servername = @@ servername,我们可以假设它是备份。.但是那看起来很脆弱。
有什么建议吗?
谢谢
答案 0 :(得分:0)
也许是这样吗?
SELECT
b.backup_set_id, r.backup_set_id, b.backup_finish_date, r.restore_date
FROM msdb.dbo.backupset b
LEFT JOIN msdb.dbo.restorehistory r
ON b.backup_set_id = r.backup_set_id
WHERE
r.restore_date IS NULL -- no restore record.
OR r.restore_date > b.backup_finish_date; -- restore happened after backup was created.
这里的想法是,如果[restore_date]大于[backup_finish_date],那么我们仍要在结果集中包括原始备份集。