可能會延遲記錄截斷的因素
記錄截斷會釋出記錄檔中的空間,以供交易記錄重複使用。由於記錄的使用中部分無法被截斷或是以壓縮的方式加以移除,因此當記錄檔記錄長時間保持使用中狀態時,截斷可能就會延遲。
[!附註]
如需有關記錄截斷如何運作的詳細資訊,請參閱<交易記錄截斷>。
記錄檔記錄可能會在各種情況下維持使用中狀態,本主題將會加以說明。若要探索是否有任何原因導致記錄截斷無法進行,請使用 sys.databases 目錄檢視的 log_reuse_wait 和 log_reuse_wait_desc 資料行。
[!附註]
這些因素中有一部分 (例如,長時間執行的交易或已暫停的資料庫鏡像工作階段) 會導致交易記錄填滿的結果。如需有關如何回應完整交易記錄的詳細資訊,請參閱<寫滿交易記錄疑難排解 (錯誤 9002)>。
下表簡短描述 sys.database 目錄檢視的 log_reuse_wait 和 log_reuse_wait_desc 資料行的值。
log_reuse_wait 值 |
log_reuse_wait_desc 值 |
描述 |
---|---|---|
0 |
NOTHING |
目前有一個或多個可重複使用的虛擬記錄檔。 |
1 |
CHECKPOINT |
自從上次記錄截斷後尚未出現任何檢查點,或是記錄標頭尚未移到虛擬記錄檔的範圍之外 (所有復原模式)。 這是延遲記錄截斷的一般原因。如需詳細資訊,請參閱<檢查點與記錄檔的使用中部份>。 |
2 |
LOG_BACKUP |
必須要有記錄備份,才能將記錄的標頭往前移 (僅限完整或大量記錄復原模式)。
附註
記錄備份不會防止截斷。
當記錄備份完成後,記錄的標頭會往前移,而某些記錄空間可能就可以重複使用。 |
3 |
ACTIVE_BACKUP_OR_RESTORE |
正在進行資料備份或還原 (所有復原模式)。 資料備份的運作方式與使用中交易類似,而且執行中的備份將導致記錄無法截斷。如需詳細資訊,請參閱本主題稍後的「資料備份作業與還原作業」。 |
4 |
ACTIVE_TRANSACTION |
交易在使用中 (所有復原模式)。
|
5 |
DATABASE_MIRRORING |
資料庫鏡像已暫停,或者在高效能模式下,鏡像資料庫已大幅落後主體資料庫 (僅限完整復原模式)。 如需詳細資訊,請參閱本主題稍後的「資料庫鏡像與交易記錄」。 |
6 |
REPLICATION |
進行交易式複寫期間,與發行集相關的交易仍然未傳遞至散發資料庫 (僅限完整復原模式)。 如需詳細資訊,請參閱本主題稍後的「交易式複寫與交易記錄」。 |
7 |
DATABASE_SNAPSHOT_CREATION |
正在建立資料庫快照集 (所有復原模式)。 這是延遲記錄截斷的一般原因 (通常也是暫時的原因)。 |
8 |
LOG_SCAN |
正在進行記錄掃描 (所有復原模式)。 這是延遲記錄截斷的一般原因 (通常也是暫時的原因)。 |
9 |
OTHER_TRANSIENT |
這個值目前尚未使用。 |
資料備份作業與還原作業
任何備份或還原作業期間都不會發生記錄截斷的狀況。在 SQL Server 2005 及更新的版本中,記錄備份可以在資料備份期間進行。不過,您不能在這種記錄備份期間截斷記錄,因為所有的交易記錄都必須保留給資料備份作業使用。如果資料備份阻礙截斷記錄,取消該備份可能有助於化解眼前的問題。
如需有關記錄截斷的詳細資訊,請參閱<交易記錄截斷>。
長時間執行的使用中交易
使用中交易會要求包含交易開頭的記錄檔記錄保持使用中狀態。例如,如果交易的開始和結束是由使用者控制,長時間執行之交易的常見原因就是使用者開始進行交易,然後在交易等候使用者回應時離開。在這種情況下,雖然等候交易本身產生的記錄很少,但是它會阻擋記錄截斷動作,而導致記錄檔變大。
[!附註]
如需有關如何避免長時間執行之交易的詳細資訊,請參閱<撰寫有效率的交易>。
資料庫鏡像與交易記錄
進行資料庫鏡像時,每一筆記錄都必須維持使用中狀態,直到主體伺服器執行個體收到鏡像伺服器執行個體傳來的通知,表示記錄已寫入鏡像伺服器的磁碟為止。如果鏡像伺服器執行個體落在主體伺服器執行個體之後,使用中的記錄空間量也會隨之成長。在這種情況下,您可能必須停止資料庫鏡像、建立截斷記錄的記錄備份、將該記錄備份套用至鏡像資料庫 (使用 WITH NORECOVERY),並重新啟動鏡像。
重要事項 |
---|
此外,如果在必要的記錄備份之後建立任何額外的記錄備份,您也必須手動套用每一份額外的記錄備份 (一律使用 WITH NORECOVERY),然後才能啟動鏡像。套用最新的記錄備份之後,您就可以啟動鏡像。 |
交易式複寫與交易記錄
合併式複寫和快照式複寫不會影響交易記錄大小,但是交易式複寫會影響。如果資料庫包含一個或多個交易式發行集,則除非已將所有與發行集相關的交易傳遞至散發資料庫,否則不會截斷記錄。如果交易記錄變得很大,並且「記錄讀取器代理程式」依排程執行,請考慮縮短兩次執行間的間隔或設定其以連續模式執行。如果已將其設定為在連續模式下執行 (預設值),則請確定它正在執行。如需有關如何檢查「記錄讀取器代理程式」狀態的詳細資訊,請參閱<如何:檢視與發行集相關聯之代理程式的資訊並執行工作 (複寫監視器)>。
此外,如果您已在發行集資料庫或散發資料庫中設定選項 'sync with backup',則除非已備份所有交易,否則交易記錄不會被截斷。如果交易記錄變得很大,並且您已設定此選項,則請考慮縮短兩次交易記錄備份之間的間隔。如需有關如何備份和還原涉及交易式複寫之資料庫的詳細資訊,請參閱<備份與還原快照式和交易式複寫的策略>。
管理複寫
監視複寫