Sql-Server

縮小日誌文件不會減小大小

  • May 18, 2021

我有一個數據庫,它有一個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 的導入選項將數據庫內容導入另一個數據庫。

引用自:https://dba.stackexchange.com/questions/41215