SQL服务器:master.sys.databases中的backup_finish_date到底是什么

SQL Server: What exactly is the backup_finish_date in master.sys.databases

使用以下查询(来自 SQL Server: how to query when the last transaction log backup has been taken?)查询最后一个 backup_finish_date 时:

SELECT   d.name,
         d.recovery_model_desc,
         MAX(b.backup_finish_date) AS backup_finish_date
FROM     master.sys.databases d
         LEFT OUTER JOIN msdb..backupset b
         ON       b.database_name = d.name
         AND      b.type          = 'L'
GROUP BY d.name, d.recovery_model_desc
ORDER BY backup_finish_date DESC

我所有数据库的 backup_finish_date 都是空的,这适用于恢复模式为 BULK_LOGGED、FULL 或 SIMPLE 的数据库。

这是否意味着 none 这些数据库已经备份了它们的事务日志(如链接问题的标题所示)?

是的,你是对的。如果你的 backup_finish_datenull 意味着它从未备份过。但是,msdb..backupset 可以是 modified/tempered。您可以检查备份类型的数据库的最后备份。

SELECT   d.name,
         d.recovery_model_desc,
         b.type, -- type of backup
         MAX(b.backup_finish_date) AS backup_finish_date
FROM     master.sys.databases d
         LEFT OUTER JOIN msdb..backupset b
         ON       b.database_name = d.name
GROUP BY d.name, d.recovery_model_desc, b.type
ORDER BY backup_finish_date DESC

type Can be:
D = Database OR Full
I = Differential database
L = Log
F = File or filegroup
G =Differential file
P = Partial
Q = Differential partial
Can be NULL.

参考MSDN