解決DB交易記錄檔過大的狀況
故事是這樣的,我發有公司內有一台SQL DB的備份壓縮資料檔異常的肥大,在回頭去確認線上的資料才發現該資料庫的交易記錄檔(.ldf)已經高達快80G,但該資料庫每天都有做full backup理論上會清掉交易記錄檔才對,當下為了解決問題於是先手動處理該狀況,作法如下
先把資料庫狀態從「完整」改成「簡單」

然後先下指令看資料庫名稱
select * from sys.database_files

接著下指令去壓縮,檔名部分就是改成上面看到的部分
DBCC SHRINKFILE (檔名 , 2)
通常做到這邊,.ldf這個檔案就會有效的被壓縮,不過我碰到的狀況剛好就不是如此
(此時突然想起,人生最重要的就是這個BUT…)
再繼續往下查,竟然發現該資料庫是在replication的狀態,因此這樣所以上面的指令才會失效
select name, recovery_model_desc, log_reuse_wait_desc from sys.databases

所以可以透過下列指令來移除
EXEC sp_removedbreplication @dbname = '資料庫名稱'
完成後,再回頭去做DBCC SHRINKFILE,最後再把資料庫狀態改回「完整」即可
[1] [SQL Server] 解決log檔(ldf file)過度膨脹的實戰經驗
December 02, 2014