SQL SERVER數據庫批量日誌還原生成腳本

在對SQL SERVER數據庫進行異地恢復的過程中,很多時候,由於完整備份時間比較久遠,或數據庫事務日誌的備份頻率較高,如想把數據庫恢復到最新的狀態,需要進行多次的日誌還原,這個時候手動操作比較繁瑣,下面將用腳本方式將在源庫批量生成還原腳本,可在異地一次性批量執行,比較方便靈活:

SELECT bs.database_name AS 'Database Name',
    bs.backup_start_date AS 'Backup Start',
    bs.backup_finish_date AS 'Backup Finished',
    DATEDIFF(MINUTE, bs.backup_start_date, bs.backup_finish_date) AS 'Duration (min)',
    'restore '+ 
    CASE bs.[type]   
        WHEN 'D' THEN 'database ' 
        else 'log ' 
        end
    +bs.database_name +' from disk='''+ bmf.physical_device_name + ''' with norecovery;' AS 'Backup File',
    CASE
        WHEN bs.[type] = 'D' THEN 'Full Backup'
        WHEN bs.[type] = 'I' THEN 'Differential Database'
        WHEN bs.[type] = 'L' THEN 'Log'
        WHEN bs.[type] = 'F' THEN 'File/Filegroup'
        WHEN bs.[type] = 'G' THEN 'Differential File'
        WHEN bs.[type] = 'P' THEN 'Partial'
        WHEN bs.[type] = 'Q' THEN 'Differential partial'
    END AS 'Backup Type'
FROM msdb.dbo.backupmediafamily bmf WITH(NOLOCK)
    INNER JOIN msdb..backupset bs WITH(NOLOCK)
    ON bmf.media_set_id = bs.media_set_id
WHERE bs.database_name = 'test'                         --請輸入要還原的庫名
and bs.backup_start_date>='2019-04-01 04:00:00.000'     --請輸入要還原的起始時間
and bs.backup_finish_date <= '2019-09-01 18:16:03.000'  --請輸入要還原的結束時間
ORDER BY bs.backup_start_date asc
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章