2015-10-01

[MS SQL Server] 還原資料庫備份到同一台主機

目前工作環境的MS SQL Server有做
每小時 交易記錄備份
每天 差異備份
每週 完整備份

先前有測試過將資料庫直接恢復到特定時間是沒有問題的,
不過今天卻小小卡關一下,因為常見的是原資料庫利用備份檔還原,
或者在其它資料庫主機做同樣資料庫名稱的備份還原動作!

但是如果是在同一台主機,要將原本備份的資料還原到另外一個資料庫呢?
假設原本資料庫叫DB_AA,想要在同主機上新建一個DB_BB,
並將之前DB_AA備份的檔案回存到DB_BB上

今天遇到的錯誤訊息是
"備份組包含現有的 'XXX' 資料庫以外的資料庫備份。"



最後在FB-SQL PASS Taiwan社團問到了解決方法,
只怪自己不仔細,只想到直接用指令回復,
其實也可以利用UI設定好後產生指令去看中間的差異!

RESTORE DATABASE [還原至DB名] FROM  DISK = N'路徑:\備份檔.bak'
WITH  FILE = 1, 
MOVE N'備份檔DB名' TO N'路徑:\還原至DB名.mdf', 
MOVE N'備份檔DB名_log' TO N'路徑:\還原至DB名_log.ldf', 
NOUNLOAD,NoRecovery,  REPLACE,  STATS = 10
GO

RESTORE DATABASE 還原至DB名
FROM DISK = 'F:\20150930\20150927050000_Diff.diff'
WITH NORECOVERY

RESTORE LOG 還原至DB名
FROM DISK = 'F:\20150930\20150930130000_Log.trn'
WITH NORECOVERY

RESTORE LOG 還原至DB名
FROM DISK = 'F:\20150930\20150930140000_Log.trn'
WITH RECOVERY

注意還原的順序為完整備份、差異備份、交易記錄備份
除了最後一個還原是用WITH RECOVERY
其餘應該都要用WITH NORECOVERY


沒有留言: