[英]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的方法有兩種:
使用SIMPLE恢復模型的數據庫-發生檢查點時,日志將清除
使用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.