1. 查看日誌信息
DACC LOGINFO(‘數據庫名稱’)
Status=0:該狀態的日誌代表已經備份到磁盤的日誌文件。
Status=2: 該狀態是日誌還沒有備份。這樣的狀態下日誌時無法減小的。
2. 查看日誌截斷延遲的原因
活躍(active)的日誌無法通過收縮來截斷,有各種原因會使日誌截斷延遲,具體表現就是事務日誌的物理文件無法通過截斷、收縮來減小,通過下面的代碼可以看到實力上每個數據庫的日誌截斷延遲原因:
use master
go
select name,database_id,log_reuse_wait,log_reuse_wait_desc
from sys.databases
原因解釋:
NOTHING:當前有一個或多個可重複使用的虛擬日誌文件。
CHECKPOINT:自上次日誌截斷後,尚未出現檢查點,或者日誌頭部尚未跨一個虛擬文件移動。
LOG_BACKUP: 需要日誌備份,以將日誌頭部前移(適合完全模式或大容量日誌模式)
ACTIVE_BACKUP_OR_RESTORE: 數據備份或還原正在進行。
ACTIVE_TRANSACTION: 事務處於活動狀態(所有的恢復模式)。
DATABASE_MIRRORING: 數據庫鏡像暫停,或者在高性能模式下,鏡像數據庫明顯滯後於主體數據庫
REPLICATION:在事務複製過程中,與發佈相關的事務仍未傳遞到分發數據庫。
DATABASE_SNAPSHOT_CREATION:正在創建數據庫快照。
LOG_SCAN: 正在進行日誌掃描。
3. 針對延遲日誌截斷原因的部分解決方案:
LOG_BACKUP: 備份日誌後在執行即可
Backup log database with nolog
REPLICATION:
解決方法:給標有replication 的數據庫任意一個表創建事務複製,然後刪除,再執行收縮就OK啦。(注:這是數據庫的一個BUG)