交易記錄截斷

更新: 2007 年 9 月 15 日

若永遠不將記錄從交易記錄中刪除,記錄最後會填滿實體記錄檔可用的所有磁碟空間。記錄截斷會自動釋出磁碟空間以供交易記錄重複使用。

除了因為某些原因延遲之外,下列情況會自動發生記錄截斷:

  • 在簡單復原模式之下,檢查點之後。
  • 則在完整復原模式或大量記錄復原模式之下,如果自從上次備份後出現檢查點,則在記錄備份之後。如需詳細資訊,請參閱本主題稍後的「在完整或大量記錄復原模式下的記錄截斷」。

雖然記錄截斷是自動發生,但是會因為需多因素而延遲。如需有關延遲記錄截斷之因素的詳細資訊,請參閱<會造成延遲記錄截斷的因素>。

ms189085.note(zh-tw,SQL.90).gif重要事項:
在記錄截斷的長時間延遲事件中,會填滿交易記錄。如需有關如何處理完整交易記錄的詳細資訊,請參閱<寫滿交易記錄疑難排解 (錯誤 9002)>。

如需有關記錄截斷的結構性資訊,請參閱本主題稍後的「記錄截斷的運作方式」。

在完整或大量記錄復原模式下的記錄截斷

在完整復原模式或大量記錄復原模式下,無法截斷記錄的非使用中部分,直到記錄備份擷取所有記錄為止。這是維護*「記錄鏈結」* (具有未中斷記錄序號 (LSN) 的一連串記錄) 的必要程序。假設下列條件均成立,當您備份交易記錄後,就會截斷記錄:

  • 自從上次備份記錄之後發生檢查點。在完整復原模式或大量記錄復原模式下截斷記錄,檢查點是必要條件但不是充分條件。在檢查點之後,記錄會維持完整,至少到下一次交易記錄備份為止。
    如需詳細資訊,請參閱<檢查點與記錄檔的使用中部份>。
  • 沒有其他因素妨礙記錄截斷。
    一般情況下,使用定期備份時,記錄空間將定期釋放以供日後使用。但是,其他因素 (例如,長時間執行的交易) 可能會暫時導致記錄無法截斷。如需詳細資訊,請參閱<會造成延遲記錄截斷的因素>。
  • BACKUP LOG 陳述式未指定 WITH NO_TRUNCATE、WITH NO_LOG 或 WITH COPY_ONLY。
    ms189085.note(zh-tw,SQL.90).gif重要事項:
    BACKUP LOG 陳述式的 NO_LOG 和 TRUNCATE_ONLY 選項會中斷記錄鏈,因為它們會在沒有建立備份副本情況下,移除記錄的非使用中部分。在下次進行完整或差異資料庫備份之前,無法保護資料庫免於媒體失敗。下一版的 Microsoft SQL Server 將不再提供此功能。請勿在新的開發工作中使用此功能,並且儘速修改使用此功能的應用程式。

備份交易記錄

記錄截斷的運作方式

ms189085.note(zh-tw,SQL.90).gif附註:
截斷作業不會縮減實體記錄檔的大小。縮減記錄檔的實體大小會需要壓縮檔案。如需有關壓縮實體記錄檔大小的詳細資訊,請參閱<壓縮交易記錄檔>。

交易記錄是循環使用的檔案。資料庫建立時,邏輯記錄檔從實體記錄檔的最前面開始。新的記錄會加在邏輯記錄檔的最後,並朝向實體記錄檔的結尾處擴充。資料庫中的交易記錄會對應到一個或多個實體檔。SQL Server Database Engine 會在內部將每個實體記錄檔分成數個虛擬記錄檔。記錄截斷會從邏輯記錄的開頭刪除非使用中虛擬記錄檔,以釋出邏輯記錄空間。如需有關交易記錄結構的詳細資訊,請參閱<交易記錄邏輯架構>和<交易記錄檔實體架構>。

虛擬記錄檔是可重複使用的空間單位。只有僅包含非使用中記錄檔記錄的虛擬記錄檔可以截斷。交易記錄的使用中部分 (「使用中記錄」) 無法截斷,因為需要使用中記錄來還原資料庫。最近的檢查點會定義使用中記錄。記錄最多可以截斷至該記錄點。

ms189085.note(zh-tw,SQL.90).gif附註:
如需虛擬記錄檔功能的詳細資訊,請參閱<交易記錄檔實體架構>。

執行檢查點時,交易記錄的非使用中部分會標示成可重複使用。之後,記錄截斷就可以釋出非使用中的部分。截斷會釋出非使用中的虛擬記錄檔以便重複使用。最後,當新記錄寫入釋出的虛擬記錄後,該虛擬記錄檔就會再次成為使用中。

記錄於檢查點的某項資訊是必須出現於成功回復全資料庫中之第一筆記錄檔記錄的記錄序號 (LSN)。此 LSN 就稱為*「最小復原 LSN」* (MinLSN)。記錄使用中部分的開頭就是含有 MinLSN 的虛擬記錄。截斷交易記錄後,只有此虛擬記錄檔前面的記錄檔記錄才能釋出以便重複使用。

下圖將顯示截斷前後的交易記錄。第一張圖是顯示從未進行截斷的交易記錄。目前,邏輯記錄正使用四個虛擬記錄檔。虛擬記錄是從第一個虛擬記錄檔的前面開始,並於虛擬記錄 4 結束。MinLSN 記錄位於虛擬記錄 3 中。虛擬記錄 1 和虛擬記錄 2 僅包含非使用中的記錄檔記錄。這些記錄都可以截斷。虛擬記錄 5 仍未使用而且不屬於目前邏輯記錄的一部分。

具有四個虛擬記錄檔的交易記錄檔

第二張圖是顯示記錄截斷之後的內容。虛擬記錄 1 和虛擬記錄 2 已經釋出以便重複使用。邏輯記錄現在會從虛擬記錄 3 的開頭開始。虛擬記錄 5 仍未使用而且不屬於目前邏輯記錄的一部分。

分為四個虛擬記錄檔的記錄檔

請參閱

概念

檢查點與記錄檔的使用中部份
設定資料庫選項
使用交易記錄備份
選擇資料庫的復原模式
復原模式概觀

其他資源

BACKUP (Transact-SQL)
Truncate Method

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2007 年 9 月 15 日

變更的內容:
  • 修正介紹文字,釐清除非所有的虛擬記錄檔都包含使用中的記錄,否則記錄截斷為自動發生。
  • 將結構性資訊從簡介移到「記錄截斷的運作方式」一節。
  • 新增有關如何備份交易記錄之主題的連結。

2006 年 4 月 14 日

變更的內容:
  • 擴展復原模式對記錄截斷之影響的討論。
  • 釐清圖例的描述。