none
檔案差異備份的還原 RRS feed

  • 問題

  • CREATE DATABASE SalesDB ON  
    PRIMARY ( NAME = N'SalesDB', FILENAME = N'C:\gp\SalesDB.mdf' ), 
    FILEGROUP histTrx ( NAME = N'histDB', FILENAME = N'C:\gp\histDB.ndf' ), 
    FILEGROUP onlineTrx ( NAME = N'onlineDB', FILENAME = N'C:\gp\onlineDB.ndf'  )
    LOG ON ( NAME = N'SalesDB_log', FILENAME = N'C:\gp\SalesDB_log.LDF' )
    GO
    
    --修改該資料庫復原模式為完整
    ALTER DATABASE SalesDB SET RECOVERY FULL
    GO
    
    --進行完整檔案備份,將該資料庫中所有的檔案進行備份
    BACKUP DATABASE SalesDB  
    FILE='SalesDB',FILE='histDB',FILE='onlineDB'
    TO disk='C:\Backup\SalesDB.bak'
    
    
    --建立測試資料表
    CREATE TABLE SalesDB.dbo.trxT1(c1 varchar(20)) ON [PRIMARY]
    CREATE TABLE SalesDB.dbo.trxT2(c1 varchar(20)) ON histTrx
    CREATE TABLE SalesDB.dbo.trxT3(c1 varchar(20)) ON onlineTrx
    INSERT INTO SalesDB.dbo.trxT1 VALUES('ON PRIMARY')
    INSERT INTO SalesDB.dbo.trxT2 VALUES('ON histTrx')
    INSERT INTO SalesDB.dbo.trxT3 VALUES('ON onlineTrx')
    
    --進行第一次檔案差異備份
    BACKUP DATABASE SalesDB 
    FILE='SalesDB',FILE='histDB',FILE='onlineDB'
    TO disk='C:\Backup\online_fileDiff.bak' with DIFFERENTIAL
    
    --進行資料的新增
    INSERT INTO SalesDB.dbo.trxT1 VALUES('ON PRIMARY2')
    INSERT INTO SalesDB.dbo.trxT2 VALUES('ON histTrx2')
    INSERT INTO SalesDB.dbo.trxT3 VALUES('ON onlineTrx2')
    --進行第二次檔案差異備份
    BACKUP DATABASE SalesDB 
    FILE='SalesDB',FILE='histDB',FILE='onlineDB'
    TO disk='C:\Backup\online_fileDiff.bak' with DIFFERENTIAL
    
    ----------------模擬資料庫毀,砍掉所有檔案,僅留下交易紀錄檔---
    
    --1.備份結尾交易
    BACKUP LOG SalesDB to disk='c:\Backup\tail_log.bak' 
    with no_truncate
    
    
    --2.使用NORECOVERY還原完整檔案備份
    RESTORE DATABASE SalesDB
    FROM disk='C:\Backup\SalesDB.bak'
    
    RESTORE HEADERONLY  FROM DISK='C:\Backup\online_fileDiff.bak'
    
    --3.還原檔案差異備份
    RESTORE DATABASE SalesDB
    FROM DISK='C:\Backup\online_fileDiff.bak'
    WITH NORECOVERY,FILE=2
    但卻出現
    訊息 3117,層級 16,狀態 1,行 2
    無法還原記錄或差異備份,因為沒有可向前復原的檔案。
    訊息 3013,層級 16,狀態 1,行 2
    RESTORE DATABASE 正在異常結束。

    請問 步驟有何錯誤?
    謝謝!
    2010年2月12日 下午 01:59

解答

  • --2.使用NORECOVERY還原完整檔案備份
    
    RESTORE DATABASE SalesDB
    
    FROM disk='C:\Backup\SalesDB.bak'
    
    

    沒看到有用 WITH NORECOVERY 參數
    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」
    在本討論區使用正體中文(即繁體中文),是對參與的朋友的一種尊重,因此請用本討論區的語言:正體中文。
    • 已標示為解答 softballnow 2010年2月13日 上午 02:18
    2010年2月12日 下午 03:54
    版主

所有回覆

  • --2.使用NORECOVERY還原完整檔案備份
    
    RESTORE DATABASE SalesDB
    
    FROM disk='C:\Backup\SalesDB.bak'
    
    

    沒看到有用 WITH NORECOVERY 參數
    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」
    在本討論區使用正體中文(即繁體中文),是對參與的朋友的一種尊重,因此請用本討論區的語言:正體中文。
    • 已標示為解答 softballnow 2010年2月13日 上午 02:18
    2010年2月12日 下午 03:54
    版主
  • 另外,於 --1.備份結尾交易 時,除非資料庫損毀了,才用 NO_TRUNCATE,建議改用 WITH NORECOVERY(資料庫還處於線上狀態時)或 CONTINUE_AFTER_ERROR (資料庫處於離線狀態)
    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」
    在本討論區使用正體中文(即繁體中文),是對參與的朋友的一種尊重,因此請用本討論區的語言:正體中文。
    2010年2月12日 下午 04:06
    版主
  • 謝謝您!
    2010年2月13日 上午 02:03
  • 依照上列整個做一次都正常也無錯誤訊息,但是refresh 資料庫時 SalesDB 資料庫 一直處於 (正在還原...)

    請問該如何處理?

    PS: 似乎與於

    <br/>
    

    2013年5月10日 上午 05:14
  • Run this 'restore database db_nem with recovery', you should use 'with recovery' option in very last restore statement.
    2013年5月10日 下午 12:41