會造成延遲記錄截斷的因素

更新: 2006 年 7 月 17 日

記錄截斷會釋出記錄檔的空間以供交易記錄重複使用。由於記錄的使用中部分無法截斷或以壓縮的方式加以移除,因此當記錄長時間保持使用中狀態時,截斷可能就會延遲。

ms345414.note(zh-tw,SQL.90).gif附註:
如需記錄如何截斷的詳細資訊,請參閱<交易記錄截斷>。

記錄在許多情況下會保持使用中,本主題將會說明這些情況。如果有使記錄無法截斷的原因,您可以使用 sys.databases 目錄檢視的 log_reuse_waitlog_reuse_wait_desc 資料行,進行探索。

ms345414.note(zh-tw,SQL.90).gif附註:
這些因素中有一部分 (例如,長時間執行的交易或已暫停的資料庫鏡像工作階段) 會導致交易記錄填滿的結果。如需有關如何回應完整交易記錄的詳細資訊,請參閱<寫滿交易記錄疑難排解 (錯誤 9002)>。

下表說明 sys.database 目錄檢視之 log_reuse_waitlog_reuse_wait_desc 資料行的值。

log_reuse_wait 的值

log_reuse_wait_desc 的值

描述

0

NOTHING

目前,有一個或多個可重複使用的虛擬記錄檔。

1

CHECKPOINT

自從上次記錄截斷後尚未出現任何檢查點,或是記錄標頭尚未移到虛擬記錄檔的範圍之外 (所有復原模式)。

這是延遲記錄截斷的一般原因。如需詳細資訊,請參閱<檢查點與記錄檔的使用中部份>。

2

LOG_BACKUP

要將記錄的標頭向前移動,必須要有記錄備份 (僅適用完整復原模式或大量記錄復原模式)。

ms345414.note(zh-tw,SQL.90).gif附註:

記錄備份無法避免截斷。

當記錄備份完成時,記錄的標頭會往前移動,某些記錄空間可能會變成可以重複使用。

3

ACTIVE_BACKUP_OR_RESTORE

正在進行資料備份或還原 (所有復原模式)。

資料備份的運作方式與使用中交易類似,而且執行中的備份將導致記錄無法截斷。如需詳細資訊,請參閱本主題稍後的「資料備份作業與還原作業」。

4

ACTIVE_TRANSACTION

交易在使用中 (所有復原模式)。

  • 長時間執行的交易可能存在於記錄備份的開頭。如果是這個情況,釋出空間可能會需要另一個記錄備份。如需詳細資訊,請參閱本主題稍後的「長時間執行的使用中交易」。
  • 交易延遲 (僅適用 SQL Server 2005 Enterprise Edition 和更新的版本)。 「延遲的交易」 為有效的使用中交易,因為某些資源無法使用,所以已經封鎖交易的回復。如需有關造成延遲交易的原因和如何將移除交易延遲狀態的詳細資訊,請參閱<延遲交易>。

5

DATABASE_MIRRORING

資料庫鏡像已暫停,或者在高效能模式下,鏡像資料庫已大幅落後主體資料庫 (僅限完整復原模式)。

如需詳細資訊,請參閱本主題稍後的「資料庫鏡像與交易記錄」。

6

REPLICATION

進行交易式複寫期間,與發行集相關的交易仍然未傳遞至散發資料庫 (僅限完整復原模式)。

如需詳細資訊,請參閱本主題稍後的「交易式複寫與交易記錄」。

7

DATABASE_SNAPSHOT_CREATION

正在建立資料庫快照集 (所有復原模式)。

這是延遲記錄截斷的一般原因 (通常也是暫時的原因)。

8

LOG_SCAN

正在進行記錄掃描 (所有復原模式)。

這是延遲記錄截斷的一般原因 (通常也是暫時的原因)。

9

OTHER_TRANSIENT

目前未使用這個值。

資料備份作業與還原作業

任何備份或還原作業期間都不會發生記錄截斷的狀況。在 SQL Server 2005 和更新的版本中,記錄備份可以在資料備份期間進行。不過,您不能在這種記錄備份期間截斷記錄,因為所有的交易記錄都必須保留供資料備份作業使用。如果資料備份阻礙截斷記錄,取消該備份可能有助於化解眼前的問題。當您進行檔案備份時,使用 WITH NO_LOG 對於避免發生阻礙截斷記錄的問題會有幫助。

如需有關記錄截斷的詳細資訊,請參閱<交易記錄截斷>。

ms345414.note(zh-tw,SQL.90).gif重要事項:
在 SQL Server 的未來版本中將移除 BACKUP LOG 陳述式的 NO_LOG 和 TRUNCATE_ONLY 選項。這些選項會移除記錄非使用中的部分,但不會建立它的備份副本,而且還會捨棄使用中的記錄以外的所有記錄,藉以截斷記錄。這就會中斷記錄鏈結。在下次進行完整或差異資料庫備份之前,無法保護資料庫免於媒體失敗。因此,我們強烈建議您避免在新的開發工作中使用任何這些選項,並且規劃修改目前使用它的應用程式。

長時間執行的使用中交易

使用中交易會要求包含交易起點的記錄保持使用中狀態。例如,如果交易的開始和結束是由使用者控制,長時間執行之交易的常見原因就是使用者開始進行交易,然後在交易等候使用者回應時離開。在這種情況下,雖然等候交易本身產生的記錄很少,但是它會阻擋記錄截斷動作,而導致記錄檔變大。

ms345414.note(zh-tw,SQL.90).gif附註:
如需有關如何避免長時間執行之交易的詳細資訊,請參閱<撰寫有效率的交易>。

資料庫鏡像與交易記錄

進行資料庫鏡像時,每一筆記錄都必須維持使用中狀態,直到主體伺服器執行個體收到鏡像伺服器執行個體傳來的通知,表示記錄已寫入鏡像伺服器磁碟的通知為止。如果鏡像伺服器執行個體落在主體伺服器執行個體之後,使用中的記錄空間量也會隨之成長。在這種情況下,您可能必須停止資料庫鏡像、建立截斷記錄的記錄備份、將該記錄備份套用至鏡像資料庫 (使用 WITH NORECOVERY),並重新啟動鏡像。

ms345414.note(zh-tw,SQL.90).gif重要事項:
此外,如果在必要的記錄備份之後建立任何額外的記錄備份,您也必須手動套用每一份額外的記錄備份 (一律使用 WITH NORECOVERY),然後才能啟動鏡像。套用最新的記錄備份之後,您就可以啟動鏡像。

如需詳細資訊,請參閱<移除資料庫鏡像>和<設定資料庫鏡像>。

交易式複寫與交易記錄

合併式複寫和快照式複寫不會影響交易記錄大小,但交易式複寫會影響。如果資料庫包含一個或多個交易式發行集,則除非已將所有與發行集相關的交易傳遞至散發資料庫,否則不會截斷記錄檔。如果交易記錄變得很大,並且「記錄讀取器代理程式」依排程執行,請考慮縮短兩次執行的時間間隔。或者將它設定成以連續模式執行。如果已將其設定為在連續模式下執行 (預設值),則請確定它正在執行。如需有關如何檢查「記錄讀取器代理程式」狀態的詳細資訊,請參閱<如何:檢視與發行集相關聯之代理程式的資訊並執行工作 (複寫監視器)>。

此外,如果您已在發行集資料庫或散發資料庫中設定選項 'sync with backup',則除非已備份所有交易,否則交易記錄不會被截斷。如果交易記錄變得很大,並且您已設定此選項,則請考慮縮短兩次交易記錄備份之間的間隔。如需有關如何備份和還原涉及交易式複寫之資料庫的詳細資訊,請參閱<備份與還原快照式和交易式複寫的策略>。

若要管理複寫

若要監視複寫

請參閱

概念

檢查點與記錄檔的使用中部份
交易記錄截斷
壓縮交易記錄檔
寫滿交易記錄疑難排解 (錯誤 9002)

其他資源

管理交易記錄

說明及資訊

取得 SQL Server 2005 協助