确定msdb.dbo.backupset记录是备份还是还原

时间:2018-07-25 15:11:47

标签: sql-server

是否有一种方法可以确定msdb.dbo.backupset记录是备份还是还原?

我们正在编写一个用于存档备份的应用程序。 为了确定是否有新的备份,我们检查了msdb.dbo.backupset,但是此表包含备份和还原的记录。

要过滤掉还原备份集,我们只显示restorehistory表中不存在backup_set_id的记录。

问题是,如果我们备份数据库,然后将其还原到同一服务器,则该备份将被视为还原而未显示。

我已经考虑过,如果backupset.servername = @@ servername,我们可以假设它是备份。.但是那看起来很脆弱。

有什么建议吗?

谢谢

1 个答案:

答案 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],那么我们仍要在结果集中包括原始备份集。