[SQL SERVER] 實戰紀錄 無法壓縮交易紀錄檔 (Unable to shrink transaction log)

  • 1336
  • 0

摘要:[SQL SERVER] 實戰紀錄 無法壓縮交易紀錄檔 (Unable to shrink transaction log)

今日使用者問我,為何他的log檔無法shrink,請我協助幫忙

他的log檔已經把硬碟空間吃光了,影響到整個instance的運作

以下是解決步驟參考

 

1. 先檢視交易紀錄無法reuse的原因

select log_reuse_wait_desc from sys.databases

今日的案例為顯示 Replication,也就是說交易紀錄檔上被標記為複寫,所以這些交易紀錄等待被傳送至distribution,所以不會被truncate

一般來說,Log Reader Agent會去交易記錄檔中抓取被標記為複寫的資料傳送到distribution後,把標記移除,就能被reuse了

但是不知道什麼原因,一直沒有把標記移除,而複寫的狀態也無異常

 

2. 下面提供兩種解決複寫狀態無法shrink的方法

  • EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1;

​       更新最後分散交易的紀錄,也就是把現在LOG上資料都標示已散發

  • EXEC sp_replicationdboption @dbname='',@optionname='publish',@value='false';

​       移除publish後,shrink log,再重建