如何在 SQL Server 中查询上次还原日期?

Kee*_*ker 87 sql-server-2008 sql-server restore

是否有 T-SQL 查询显示某个数据库的上次还原日期时间?

mar*_*c_s 142

这将列出服务器上每个数据库的所有“最近”还原:

WITH LastRestores AS
(
SELECT
    DatabaseName = [d].[name] ,
    [d].[create_date] ,
    [d].[compatibility_level] ,
    [d].[collation_name] ,
    r.*,
    RowNum = ROW_NUMBER() OVER (PARTITION BY d.Name ORDER BY r.[restore_date] DESC)
FROM master.sys.databases d
LEFT OUTER JOIN msdb.dbo.[restorehistory] r ON r.[destination_database_name] = d.Name
)
SELECT *
FROM [LastRestores]
WHERE [RowNum] = 1
Run Code Online (Sandbox Code Playgroud)

  • `restorehistory` 中的记录可以被 `sp_delete_backuphistory` 清除。 (3认同)

Kee*_*ker 17

可以使用的脚本是:

declare @DB sysname = 'MyDB';
select * from msdb.dbo.restorehistory where destination_database_name = @DB;
Run Code Online (Sandbox Code Playgroud)


Ima*_*man 13

为此目的的主表是 msdb..restorehistory

SELECT  [rs].[destination_database_name] ,
        [rs].[restore_date] ,
        [bs].[backup_start_date] ,
        [bs].[backup_finish_date] ,
        [bs].[database_name] AS [source_database_name] ,
        [bmf].[physical_device_name] AS [backup_file_used_for_restore]
FROM    msdb..restorehistory rs
        INNER JOIN msdb..backupset bs ON [rs].[backup_set_id] = [bs].[backup_set_id]
        INNER JOIN msdb..backupmediafamily bmf ON [bs].[media_set_id] = [bmf].[media_set_id]
ORDER BY [rs].[restore_date] DESC
Run Code Online (Sandbox Code Playgroud)

来自 mssqltips

  • +1 除了恢复日期,它还返回备份日期,这在我的情况下也很有用 (2认同)