轉載:http://technet.microsoft.com/zh-cn/library/ms345414%28zh-tw,SQL.90%29.aspx
日誌截斷可釋放記錄檔中的空間,以供交易記錄重新使用。 由於日誌的活動部分不能通過收縮來截斷或刪除,因此,當日誌記錄長時間保持活動狀態時,截斷將被延遲。
| 注意: |
| 有關日誌截斷工作原理的資訊,請參閱交易記錄截斷。 |
日誌記錄可在許多情況下保持活動狀態,這將在本主題中加以介紹。 可以通過下面的方法尋找阻止日誌截斷的原因(如存在):使用 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 |
事務處於活動狀態(所有復原模式)。 在記錄備份開始時,可能存在長時間啟動並執行事務。 在這種情況下,釋放空間可能需要進行其他記錄備份。 有關詳細資料,請參閱本主題後面的“長時間啟動並執行活動事務”部分。 事務將延遲(僅適用於 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 可有助於避免出現阻止日誌截斷的問題。
有關日誌截斷的詳細資料,請參閱交易記錄截斷。
| 重要提示: |
| 未來版本的 SQL Server 將刪除 BACKUP LOG 語句的 NO_LOG 和 TRUNCATE_ONLY 選項。 這些選項通過放棄活動紀錄以外的所有日誌,在無需備份日誌副本的情況下刪除不活動的日誌部分,並截斷日誌。 這會打斷日誌鏈。 在下一次完整備份或差異Database Backup之前,將無法為資料庫提供媒體故障保護。 因此,極力建議您在新的開發工作中避免使用這兩個選項,並建議您計劃修改當前使用這兩個選項的應用程式。 |
長時間啟動並執行活動事務
活動事務要求日誌從包含事務開始的日誌記錄開始,一直保持活動狀態。 例如,如果事務的開始和結束由使用者控制,則導致長時間運行事務的一般原因是使用者在開始事務之後便離開,而事務等待使用者的響應。 在上述情況下,雖然處於等待狀態的事務本身會產生極小的日誌,但仍會阻止日誌截斷,並使日誌逐漸層大。
| 注意: |
| 有關如何避免事務長時間啟動並執行資訊,請參閱編寫有效事務。 |
資料庫鏡像與交易記錄
資料庫鏡像要求每個日誌記錄均保持活動狀態,直到主體伺服器執行個體從鏡像伺服器執行個體中接收到有關已將記錄寫入鏡像伺服器磁碟的通知。 如果鏡像伺服器執行個體落後於主體伺服器執行個體,則活動紀錄空間量將相應增加。 在這種情況下,您最好停止資料庫鏡像,執行截斷日誌的記錄備份,將該記錄備份應用到鏡像資料庫(使用 WITH NORECOVERY),然後重新啟動鏡像。
| 重要提示: |
| 此外,在開始鏡像之前,如果在執行完必要的記錄備份之後又執行了任何其他記錄備份,則還必須手動應用其他每個記錄備份(始終使用 WITH NORECOVERY)。 應用最新的記錄備份之後,便可開始鏡像。 |
有關詳細資料,請參閱刪除資料庫鏡像和設定資料庫鏡像。 事務複製與交易記錄
合併式複寫和快照式複寫不影響交易記錄的大小,但事務複製會影響。 如果資料庫包括一個或多個事務發布,則只有將與這些發布有關的所有事務傳遞到散發資料庫之後才會截斷日誌。 如果交易記錄變得過大,並且記錄讀取器代理程式是按照預定的時間間隔啟動並執行,請考慮縮短其啟動並執行間隔時間。 或者,將其設定為在連續模式下運行。 如果將其設定為以連續模式運行(預設值),請確保它正在運行。 有關如何檢查記錄讀取器代理程式狀態的詳細資料,請參閱如何查看與發布相關的代理的資訊並執行此代理的任務(複製監視器)。
此外,如果在發行集資料庫或散發資料庫中設定了選項“sync with backup”,則直到備份了所有事務後,才會截斷交易記錄。 如果交易記錄增長過大,而且已設定了此選項,請考慮縮短交易記錄備份間的間隔。 有關如何備份與還原涉及事務複製的資料庫的詳細資料,請參閱快照式複寫和事務複製的備份與還原策略。