2016-01-18 1 views
0

Обычно мы используем File Explorer для всех файлов, необходимых для восстановления базы данных до определенной даты. Теперь я хочу автоматизировать это, возможно, используя хранимую процедуру с именем базы данных и параметрами даты, подобными параметрам. Что мне нужно, чтобы получить это:Данная база данных и дата, извлекают файлы bak, diff и все trn для восстановления базы данных

  • Последние .BAK файл
  • Последний файл дифф
  • Все TRN файлы

Таким образом, я смогу восстановить базу данных. У меня есть следующее:

SELECT 
    database_name , 
    physical_device_name, 
    backup_start_date, 
    backup_finish_date, 
    backup_size/1024.0 AS BackupSizeKB 
FROM 
    msdb.dbo.backupset b 
JOIN 
    msdb.dbo.backupmediafamily m ON b.media_set_id = m.media_set_id 
WHERE 
    database_name = 'XEXPERTIS01' 
ORDER BY 
    backup_finish_date DESC 
go 

Любая помощь?

ответ

1

-BAK файл:

SELECT TOP 1 
     database_name, physical_device_name, backup_start_date, 
     backup_finish_date, backup_size/1024.0 AS BackupSizeKB 
FROM msdb.dbo.backupset b 
JOIN msdb.dbo.backupmediafamily m 
     ON b.media_set_id = m.media_set_id 
WHERE database_name = 'XEXPERTIS01' 
     AND physical_device_name LIKE '%.bak' 
ORDER BY backup_finish_date DESC; 
    GO 

DIFF файлы:

SELECT database_name, physical_device_name, backup_start_date, 
     backup_finish_date, backup_size/1024.0 AS BackupSizeKB 
FROM msdb.dbo.backupset b 
JOIN msdb.dbo.backupmediafamily m 
     ON b.media_set_id = m.media_set_id 
WHERE database_name = 'XEXPERTIS01' 
     AND physical_device_name LIKE '%.diff' 
     AND backup_start_date > (
            SELECT TOP 1 
              backup_finish_date 
            FROM  msdb.dbo.backupset b 
            JOIN  msdb.dbo.backupmediafamily m 
              ON b.media_set_id = m.media_set_id 
            WHERE  database_name = 'XEXPERTIS01' 
              AND physical_device_name LIKE '%.bak' 
            ORDER BY backup_finish_date DESC 
           ); 
    GO 

TRN файлы:

SELECT database_name, physical_device_name, backup_start_date, 
     backup_finish_date, backup_size/1024.0 AS BackupSizeKB 
FROM msdb.dbo.backupset b 
JOIN msdb.dbo.backupmediafamily m 
     ON b.media_set_id = m.media_set_id 
WHERE database_name = 'XEXPERTIS01' 
     AND physical_device_name LIKE '%.trn' 
     AND backup_start_date > (
            SELECT TOP 1 
              backup_finish_date 
            FROM  msdb.dbo.backupset b 
            JOIN  msdb.dbo.backupmediafamily m 
              ON b.media_set_id = m.media_set_id 
            WHERE  database_name = 'XEXPERTIS01' 
              AND (physical_device_name LIKE '%.diff' 
              OR physical_device_name LIKE '%.bak') 
            ORDER BY backup_finish_date DESC 
           ); 
    GO 
+0

спасибо !!! это мне очень помогает; –

Смежные вопросы