Как запросить последнюю дату восстановления в SQL Server?

Есть ли запрос T-SQL, который показывает последнее время datetime восстановления для определенной базы данных?

52 голоса | спросил Kees C. Bakker 28 Jpm1000000pmMon, 28 Jan 2013 13:43:06 +040013 2013, 13:43:06

7 ответов


88

Здесь перечислены все «самые последние» восстановления для каждой базы данных на вашем сервере:

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
ответил marc_s 28 Jpm1000000pmMon, 28 Jan 2013 13:53:41 +040013 2013, 13:53:41
15

Сценарий, который можно использовать, это:

declare @DB sysname = 'MyDB';
select * from msdb.dbo.restorehistory where destination_database_name = @DB;
ответил Kees C. Bakker 28 Jpm1000000pmMon, 28 Jan 2013 13:49:10 +040013 2013, 13:49:10
7

Основная таблица для этой цели - 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

от mssqltips

ответил Iman Abidi 10 +04002014-10-10T12:42:40+04:00312014bEurope/MoscowFri, 10 Oct 2014 12:42:40 +0400 2014, 12:42:40
2

Он предоставит вам последнюю дату обновления для вашей БД:

select top 1 * from restorehistory 
where destination_database_name='DB_NAME'
order by restore_history_id desc 
ответил Rajendra Maloo 22 Jpm1000000pmThu, 22 Jan 2015 22:05:39 +030015 2015, 22:05:39
1

Добавление важной информации о имени пользователя и имени операционной системы OS:

Select Destination_database_name, 
       restore_date,
       database_name as Source_database,
       Physical_device_name as Backup_file_used_to_restore,
       bs.user_name,
       bs.machine_name
from msdb.dbo.restorehistory rh 
  inner join msdb.dbo.backupset bs 
    on rh.backup_set_id=bs.backup_set_id
  inner join msdb.dbo.backupmediafamily bmf 
    on bs.media_set_id =bmf.media_set_id
ORDER BY [rh].[restore_date] DESC
ответил Edwin Arias 9 PM00000070000003831 2015, 19:00:38
1
  

Есть ли запрос T-SQL, который показывает последнее время datetime восстановления для определенной базы данных?

Привет Кис, Я создал сценарий ниже, который может предоставить вам более подробную информацию о вашем запросе.

  

Запрос, чтобы получить информацию «Самое последнее восстановление» о конкретной базе данных:

WITH MostRecentRestore AS
(
SELECT 
RowNum = ROW_NUMBER() OVER (PARTITION BY RH.Destination_database_name ORDER BY RH.Restore_Date DESC),
RH.Restore_date, 
BS.[database_name] as Source_Database, 
RH.Destination_Database_Name, 
BS.Backup_Start_Date, 
BS.Backup_Finish_Date, 
CASE WHEN RH.restore_type = 'D' THEN 'Database'
  WHEN RH.restore_type = 'F' THEN 'File'
  WHEN RH.restore_type = 'G' THEN 'Filegroup'
  WHEN RH.restore_type = 'I' THEN 'Differential'
  WHEN RH.restore_type = 'L' THEN 'Log'
  WHEN RH.restore_type = 'V' THEN 'Verifyonly'
  WHEN RH.restore_type = 'R' THEN 'Revert'
  ELSE RH.restore_type 
END AS Restore_Type,
RH.[Replace],
RH.[Recovery],
RH.Restore_Date AS Restored_On,
BMF.physical_device_name AS Restored_From,
RF.destination_phys_name AS Current_DB_File_Location,
RH.user_name AS Restored_By,
BS.machine_name,
BS.Server_Name
FROM msdb.dbo.RestoreHistory RH 
INNER JOIN msdb.dbo.BackupSet BS ON RH.backup_set_id = BS.backup_set_id
INNER JOIN msdb.dbo.restorefile RF ON RH.Restore_History_id = RF.Restore_History_id
INNER JOIN msdb.dbo.Backupmediafamily BMF ON bs.media_set_id = bmf.media_set_id
)
SELECT *
FROM MostRecentRestore
WHERE [RowNum] = 1 AND destination_database_name = 'YourDatabaseName'
ответил Kundan Dasange 29 MarpmThu, 29 Mar 2018 23:09:37 +03002018-03-29T23:09:37+03:0011 2018, 23:09:37
0
Select Destination_database_name, 
       restore_date,database_name as Source_database,
       Physical_device_name as Backup_file_used_to_restore 
from msdb.dbo.restorehistory rh 
  inner join msdb.dbo.backupset bs 
    on rh.backup_set_id=bs.backup_set_id
  inner join msdb.dbo.backupmediafamily bmf 
    on bs.media_set_id =bmf.media_set_id
ORDER BY [rh].[restore_date] DESC

Для получения подробной информации вы можете проверить ссылку ниже:

http: //www.passionforsql .com /как к найти, когда-последнюю базу данных backuprestore-было сделано /

ответил Ritu 7 Maypm14 2014, 20:29:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132