簡體   English   中英

如何控制SQL Server數據庫日志文件大小?

[英]How to control SQL Server database log file size?

我們正在使用MSSQL Server,我們的應用程序每天都要進行大量的數據交換。 大約 每天有2萬行新數據,數據庫“日志文件大小”也在不斷增加。 為了控制數據庫大小,我們在處理后刪除了數據,但是“數據庫日志文件”一直在增加。

我們正在手動執行以下腳本來縮小“數據庫日志文件”的大小。 此外,只有數據庫所有者才能執行此過程。

是否有永久性修復程序可以自動控制 “數據庫日志文件”的大小? 假設,我們希望它最多分配4GB。 它應該自動清除較舊的日志

USE db1;
GO

ALTER DATABASE db1
SET RECOVERY SIMPLE;
GO
--first parameter is log file name and second is size in MB
DBCC SHRINKFILE (db1_log, 999);

ALTER DATABASE db1
SET RECOVERY FULL;
GO

問候,拉吉

我看到這個:

SET RECOVERY FULL;

在完全恢復模式下,完整的數據庫備份不包括事務日志 此外,服務器在任何情況下都不會刪除未備份的日志條目。 這意味着日志文件將不斷增長。

是否有永久性修復程序可以自動控制“數據庫日志文件”的大小?

是。 要解決此問題,您需要單獨進行事務日志備份... ,並經常進行備份。 這將使日志文件保持合理的大小,甚至可能比您的4GB小得多。

小心。 進行更改后第一次進行備份時,您可能會獲得一個相當大的備份文件,該文件可能需要一段時間才能完成,並給數據庫帶來巨大的負載。 但是,在第一次運行之后,如果您選擇了合理的時間表,一切都會平靜下來。

此外,一旦您按照新的時間表完成了第一次事務日志備份,就可以最終收縮事務日志文件。 在此之前,縮小文件沒有意義……它仍在使用所有空間,即使不是,它也會再次變大。 一旦完成了初始收縮, 您就不應該再做一次 您希望設置維護計划,這樣就無需手動收縮文件,而這次甚至只需收縮文件即可在先前的錯誤后恢復到合理的狀態。

SQL Server清除t-log的方法有兩種:

  1. 使用SIMPLE恢復模型的數據庫-發生檢查點時,日志將清除

  2. 使用FULL或BULK_LOGGED恢復模型的數據庫-發出日志備份時

如果您發出SHRINKFILE,則t-log只會縮小一次。

例如,您可以將日志文件的大小預先設置為4GB,然后自動增長為4GB。

USE [master]
GO
ALTER DATABASE [DB] MODIFY FILE ( NAME = N'DB_log', SIZE = 4096000KB , FILEGROWTH = 4096000KB )
GO

您的文件增長應設置為In Megabytes而不是In Percent 在此處輸入圖片說明

您可以將文件增長限制為固定大小,但我不建議設置此大小。 一旦達到大小,這可能會阻止應用程序插入。

如果您可以忍受1天的停機時間/數據丟失,那么SIMPLE恢復將為您服務。 但是,如果您有一家24/7的商店,並且需要恢復時間點,則需要將數據庫設置為完全恢復(清理t-log所需的日志備份),並向您的企業詢問有關RPO / RTO的要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM