Sql-Server

SQL Server 2017 事務日誌在重建索引後不收縮日誌文件

  • April 26, 2022

我有 10GB 的數據庫,並且我已經配置了事務日誌傳送。我的重建索引作業執行的索引填充因子從 100 更改為 70,事務日誌文件增長了 60GB。

我已經嘗試了很多東西來縮小,比如

  1. 銷毀日誌傳送配置帶來簡單的恢復模式和收縮不釋放數據庫也有超過 6000 個虛擬日誌文件,
  2. 我有完整備份和事務日誌備份。
  3. 我已經獲得了新數據庫的完整備份和恢復。

我記得在配置日誌傳送時,我設置了 72 小時“刪除早於”的文件。我不認為因為這個日誌不能收縮,但也許是 72 小時後這些虛擬日誌 LSN 可以過期並且我可以收縮的原因。

DBCC LOGINFO 還顯示除了 4 個文件之外,每個虛擬日誌文件都有創建 LSN。

在此處輸入圖像描述

親愛的,以前有人遇到過這種情況嗎?你能給我任何幫助的建議嗎?

謝謝,

在此處輸入圖像描述

***我在ps下面添加了;

在此處輸入圖像描述

*** DB 是簡單模式,但 vlf 仍然顯示 2 個狀態 在此處輸入圖像描述

在您顯示的螢幕截圖中,您只是試圖釋放未使用的空間而不是縮小日誌。如果您的數據文件為 10 GB,而您的日誌文件為 60 GB,那麼您實際上確實希望減小日誌文件的大小,而 6000 VLF 太多了,因此您走在了正確的軌道上。我不確定您為什麼將填充因子從 100 更改為 70,我會敦促您恢復。這是您可以縮小日誌的方法:

如果處於完全恢復狀態,請執行檢查點和日誌備份 - 您還必須先進行完整備份 - 您可能需要執行幾次檢查點和日誌備份

USE Test
GO
Checkpoint
GO
BACKUP LOG Test TO DISK = 'c:\temp\Test.trn' with init
GO

如果仍處於簡單恢復狀態,請執行檢查點和完整備份 - 您可能需要執行幾次

USE Test
GO
Checkpoint
GO
BACKUP DATABASE Test TO DISK = 'c:\temp\Test.bak' with init
GO

縮小日誌

USE test
GO
DBCC SHRINKFILE (N'test_log' , 1)
GO

以合理的增長量將日誌擴大到合理的大小

USE master
GO
ALTER DATABASE test
MODIFY FILE ( NAME = N'test_log', SIZE = 5128MB, FILEGROWTH = 1024MB )
GO

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