交易記錄邏輯架構

在邏輯上,SQL Server 交易記錄檔會以記錄檔記錄字串的形式進行運作。每個記錄檔記錄均由記錄序號 (LSN) 來識別。每筆新記錄檔記錄都會寫入記錄檔的邏輯結尾處,並且其 LSN 比它前一個記錄的 LSN 來得大。

記錄檔記錄將在它們建立時依序儲存。每筆記錄檔記錄都包含所屬交易的識別碼。對於每筆交易,所有與交易關聯的記錄檔記錄將使用反向指標個別地連結於鏈結之中,以加速交易的回復。

資料修改的記錄檔記錄可記錄所執行的邏輯作業,或是已修改資料的前置與後置資料影像。前置資料影像為執行作業之前的資料副本;後置資料影像為執行作業之後的資料副本。

復原作業的步驟取決於記錄檔記錄的類型:

  • 記錄的邏輯作業

    • 若要向前復原邏輯作業,必須再次執行作業。

    • 若要回復邏輯作業,則執行反向的邏輯作業。

  • 記錄的前置與後置資料影像

    • 若要向前復原作業,將套用後置資料影像。

    • 若要回復作業,將套用前置資料影像。

交易記錄檔中記錄了許多類型的作業。這些作業包括:

  • 每筆交易的開始與結束。

  • 每個資料修改 (插入、更新或刪除)。這包括系統預存程序或資料定義語言 (DDL) 陳述式對任何資料表 (包括系統資料表) 所做的變更。

  • 每個範圍與分頁的配置或取消配置。

  • 建立或卸除資料表或索引。

回復作業也會留下記錄。每筆交易都會在交易記錄檔中保留空間,以確保有足夠的記錄檔空間可支援由明確回復陳述式所造成的回復,或因發生錯誤而造成的回復。保留的空間大小須視交易中執行的作業而定,但通常會等於用來記錄每個作業的空間大小。當交易完成後就會釋放這個保留空間。

在記錄檔中,從對成功回復全資料庫而言不可或缺的第一筆記錄檔記錄,一直到最後寫入的記錄檔記錄的這個區段,稱為記錄檔的使用中部分,或「使用中的記錄」。這是需要進行完整資料庫復原的記錄部分。沒有任何使用中的記錄部分可被截斷。