查找 SQL 服务器数据库是否存在有效的完整备份

Find if valid full backup exists for SQL Server Database

我想查找给定数据库是否存在可用于差异或跨日志备份的有效完整备份。当然,仅仅存在完整备份是不够的,它必须能够开始一条链。为此,我想消除在恢复模式更改之前创建的那些备份,以及仅复制备份。请只使用 TSQL。没有 GUI 解释。

我查看了 Ola Hallengren 备份脚本的源代码并得出以下结论:

SELECT  CASE WHEN last_log_backup_lsn IS NULL THEN 0
             ELSE 1
        END AS log_backup_possible
FROM    sys.database_recovery_status
WHERE   database_id = DB_ID('foobar');

如果 last_log_backup_lsn 不为空,则可以进行日志备份。此外,差异备份足以开始进行日志备份。

在其他新闻中,我在上面提到了 Ola Hallengren 出色的维护脚本。具体来说,他在备份存储过程(@ChangeBackupType)中有一个参数,可以为您处理所有这些(因此您不必重新发明轮子)。