數據庫備份與還原

數據庫備份與還原的SQL語句:
備份:
  1. backup database [liDataBase] to disk = 'c:/liDataBase.bak'
還原:
  1. backup log [liDataBase] to disk = 'c:/liDataBase.log.bak' WITH NORECOVERY
  2. restore database [liDataBase] from disk = 'c:/liDataBase.bak'
注:在還原數據庫時,一定要進行尾日誌備份,否則將無法進行還原
附尾日誌備份相關說明
尾日誌備份

更新日期: 2006 年 7 月 17 日

顯示藍色數據庫磁盤的圖標 本主題僅適用於使用完整恢復模式或大容量日誌恢復模式的數據庫。

對於大多數情況,在完整恢復模式或大容量日誌恢復模式下,SQL Server 2005 要求您備份日誌尾部以捕獲尚未備份的日誌記錄。還原操作之前對日誌尾部執行的日誌備份稱爲“尾日誌備份”

SQL Server 2005 通常要求您在開始還原數據庫前執行尾日誌備份。尾日誌備份可以防止工作丟失並確保日誌鏈的完整性。將數據庫恢復到故障點時,尾日誌備份是恢復計劃中的最後一個相關備份。如果無法備份日誌尾部,則只能將數據庫恢復爲故障前創建的最後一個備份。

並非所有還原方案都要求執行尾日誌備份。如果先前的日誌備份中包含恢復點,或者您準備移動或替換(覆蓋)數據庫,則不一定需要尾日誌備份。並且,如果日誌文件受損且無法創建尾日誌備份,則必須在不使用尾日誌備份的情況下還原數據庫。最新日誌備份後提交的任何事務都將丟失。有關詳細信息,請參閱本主題下文中的“不使用尾日誌備份執行還原操作”。

尾日誌備份與任何其他日誌備份類似,使用 BACKUP LOG 語句執行。建議您在下列情況下執行尾日誌備份:

  • 如果數據庫處於在線狀態,每當您準備對數據庫執行的下一個操作爲還原操作時,請在開始還原順序之前使用 WITH NORECOVERY 備份日誌尾部: 
    BACKUP LOG database_name TO <backup_device> WITH NORECOVERY
    ms179314.note(zh-cn,SQL.90).gif注意:
    爲防止出錯,必須使用 NORECOVERY 選項。

  • 如果數據庫處於離線狀態並且無法啓動。
    嘗試執行尾日誌備份。由於此時不會發生任何事務,所以 WITH NORECOVERY 是可選的。如果數據庫受損,請使用 WITH CONTINUE_AFTER_ERROR 或 WITH NO_TRUNCATE。 
    BACKUP LOG database_name TO <backup_device> [WITH { CONTINUE_AFTER_ERROR | NO_TRUNCATE }
    ms179314.note(zh-cn,SQL.90).gif重要提示:
    除非數據庫受損,否則不建議使用 NO_TRUNCATE。

    如果數據庫受損(例如,數據庫無法啓動),則僅當日志文件未受損、數據庫處於支持尾日誌備份的狀態並且不包含任何大容量日誌更改時,尾日誌備份才能成功。

下表對這些選項進行了彙總。

BACKUP LOG 選項註釋

NORECOVERY

每當您準備對數據庫繼續執行還原操作時,請使用 NORECOVERY。NORECOVERY 使數據庫進入還原狀態。這確保了數據庫在尾日誌備份後不會更改。

除非同時指定 NO_TRUNCATE 或 COPY_ONLY 選項,否則將截斷日誌。

{ CONTINUE_AFTER_ERROR | NO_TRUNCATE }

僅當您要備份受損數據庫的尾部時才能使用 NO_TRUNCATE 或 CONTINUE_AFTER_ERROR。

ms179314.note(zh-cn,SQL.90).gif注意:
對受損數據庫備份日誌尾部時,日誌備份中正常捕獲的部分元數據可能不可用。有關詳細信息,請參閱本主題下文中的“包含不完整備份元數據的尾日誌備份”。

在數據庫損壞時創建事務日誌備份

尾日誌備份可捕獲日誌尾部,即使數據庫離線、損壞或缺少數據文件。這可能導致還原信息命令和 msdb 生成不完整的元數據。但只有元數據是不完整的,而捕獲的日誌是完整且可用的。

如果尾日誌備份包含不完整的元數據,則 backupset 表中的 has_incomplete_metadata 將設置爲 1。此外,在 RESTORE HEADERONLY 的輸出中,HasIncompleteMetadata 將設置爲 1

如果尾日誌備份中的元數據不完整,則 backupfilegroup 表在尾日誌備份時將丟失文件組的大多數相關信息。大多數 backupfilegroup 表列爲 NULL;只有以下幾列有意義:

  • backup_set_id
  • filegroup_id
  • type
  • type_desc
  • is_readonly 

不需要尾日誌備份的還原方案包括以下幾種:

發佈日期歷史記錄

2006 年 7 月 17 日

新增內容:
  • 將跳過尾日誌備份的討論擴展爲獨立部分“不使用尾日誌備份執行還原”。
更改的內容:
  • 更新了“備份日誌尾部”部分。
發佈了12 篇原創文章 · 獲贊 13 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章