none
MCITP系列之Lewis’s gift time – 070104- SQL Server 2005災難復原 RRS feed

  • 問題

  • [活動方式]

    老師於課程結束當天在論壇上po出當天課程內容相關問題,在「2天內」大家皆可踴躍回答,老師會選取出最快且最完整的回答,將之標示為「正確答案」,得獎者老師會於下次課堂上公佈(當然你也可以在2天後上論壇查看自己是否有被特別標註為解答),認真的幸運兒可能就是你喔 : P

    [注意事項]

    得獎者我們會查看你登入論壇的mail並寄信與您連絡,如果您等不到聯繫也可直接上論壇告知我們。

    [Question]

     3. 當資料庫還原的過程中,請問如何將資料還原到指定的時間點,試寫出資料庫設定條件與該使用哪種備份媒體與還原作業步驟?

    2007年1月14日 上午 03:23

解答

  • 設定條件 : 復原模式(Recovery Model)需為 大量記錄(BulkLogged) 或是 完整(Full)

    使用交易備份還原

    假設還原前作業

    1. 2007/01/15 12:00 完整備份 -Ex. BACKUP DATABASE DB_Name TO DISK=''c:\Backup\DBName.bak'
    2. 2007/01/15 15:00  進行 12:00~15:00交易記錄備份 - Ex. BACKUP LOG DB_Name TO DISK='c:\Backup\DBNameTrx.bak' 
    3. 2007/01/15 16:00 發生錯誤

    步驟

    1. 先將結尾交易紀錄取出 - Ex. BACKUP LOG DB_Name TO DISK='c:\Backup\tail_log.bak' WITH NO_TRUNCATE
    2. 還原12:00完整備份 - Ex. RESTORE DATABASE DB_Name FROM DISK='c:\Backup\DBName.bak' WITH NORECOVERY
    3. 還原15:00完整備份 - Ex. RESTORE LOG DB_Name FROM DISK='c:\Backup\DBNameTrx.bak' WITH NORECOVERY
    4. 還原結尾交易紀錄備份 - Ex. RESTORE LOG DB_Name FROM DISK='c:\Backup\tail_log.bak' WITH RECOVERY,STOPAT=2007/01/15 03:59:00 PM'
    2007年1月15日 上午 02:49

所有回覆

  • 備份需求:

    1. 要有充足的完整資料庫備份 .
    2. 資料庫損毀前的交易記錄檔備份 .
    3. 以及資料庫損毀當時的交易記錄檔 .

    還原步驟:

    1. 先由完整備份來還原資料庫(使用 NORECOVERY 選項)
    2. 由資料庫損毀前的交易記錄檔備份還原資料庫(使用 NORECOVERY 選項)
    3. 使用 STOPAT 來還原交易記錄到資料庫損毀前的最後一個交易點(使用 NORECOVERY 選項)

    注意:
    如果是使用完整或大量記錄復原模式的資料庫,在大部份情況下,SQL Server 2005 都會要求您先備份記錄結尾,再還原資料庫。除非 RESTORE 陳述式包含 WITH REPLACE 或 WITH STOPAT 子句,否則,未備份記錄結尾,便還原資料庫,會產生錯誤。

    2007年1月14日 上午 11:23
  • 設定條件 : 復原模式(Recovery Model)需為 大量記錄(BulkLogged) 或是 完整(Full)

    使用交易備份還原

    假設還原前作業

    1. 2007/01/15 12:00 完整備份 -Ex. BACKUP DATABASE DB_Name TO DISK=''c:\Backup\DBName.bak'
    2. 2007/01/15 15:00  進行 12:00~15:00交易記錄備份 - Ex. BACKUP LOG DB_Name TO DISK='c:\Backup\DBNameTrx.bak' 
    3. 2007/01/15 16:00 發生錯誤

    步驟

    1. 先將結尾交易紀錄取出 - Ex. BACKUP LOG DB_Name TO DISK='c:\Backup\tail_log.bak' WITH NO_TRUNCATE
    2. 還原12:00完整備份 - Ex. RESTORE DATABASE DB_Name FROM DISK='c:\Backup\DBName.bak' WITH NORECOVERY
    3. 還原15:00完整備份 - Ex. RESTORE LOG DB_Name FROM DISK='c:\Backup\DBNameTrx.bak' WITH NORECOVERY
    4. 還原結尾交易紀錄備份 - Ex. RESTORE LOG DB_Name FROM DISK='c:\Backup\tail_log.bak' WITH RECOVERY,STOPAT=2007/01/15 03:59:00 PM'
    2007年1月15日 上午 02:49