代码之家  ›  专栏  ›  技术社区  ›  Zach Smith

SQL Server:master.sys.databases中的backup_finish_date具体是什么

  •  -1
  • Zach Smith  · 技术社区  · 8 年前

    使用以下查询查询上次备份_finish_date时(从 SQL Server: how to query when the last transaction log backup has been taken? ):

    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的DBs。

    这是否意味着这些数据库都没有备份其事务日志(如链接问题的标题所示)?

    1 回复  |  直到 8 年前
        1
  •  2
  •   p2k    8 年前

    是的,你是对的。如果 backup_finish_date null 意味着它从未备份过。然而 msdb..backupset 可以被修改/回火。可以使用备份类型检查数据库的上次备份。

    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