Sql-Server
縮小日誌文件不會減小大小
我有一個數據庫,它有一個350 MB 的數據文件(.mdf) 和一個4.9 GB 的日誌文件(.ldf)。恢復模式設置為
FULL
。當我嘗試縮小日誌文件時,它並沒有縮小。
我知道縮小數據庫不好,不應該這樣做。但我仍然試圖這樣做以縮小日誌文件。
當我跑
DBCC SQLPerf(logspace)
我發現日誌大小為4932 MB,使用的日誌空間為98.76%!
然後我嘗試了這個命令
USE <databasename>; DBCC loginfo;
現在幾乎所有的 VLF 都是“狀態 2”,這意味著所有的 VLF 都在使用中。
我嘗試進行日誌備份,然後縮小日誌文件。收縮並沒有減小尺寸。
我將恢復模式更改為
SIMPLE
並再次嘗試縮小,但這也沒有幫助。我檢查了未結交易
DBCC opentran (database);
發現現在沒有交易打開。
是什麼阻止我縮小日誌文件?我該如何解決這個問題?
這是我自己的問題的答案。
執行以下查詢以獲取有關日誌文件重用等待的資訊:
SELECT log_reuse_wait_desc FROM sys.databases WHERE name = 'DBName'
我得到以下輸出:
log_reuse_wait_desc ------------------- REPLICATION
即使在刪除複製之後,數據庫中仍保留了一些與複製相關的對象。
要從數據庫中刪除複製,
sp_removedbreplication
可以使用。但它對我們不起作用,因為當時複製不活躍,實際上複製在很久以前就被刪除了。解決方案是使用 SQL Server 的導入選項將數據庫內容導入另一個數據庫。