在完整恢復模式下,SQL server需要定期備份日志,否則,日志文件會一直擴大,直到占滿硬盤大小,在進行一次完整備份之后,可以定期備份日志文件
腳本如下:
DECLARE @strbackup NVARCHAR(100) --改為日期加時間的 SET @strbackup = 'F:\bak\Test_bak_log_' + REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120), '-', ''), ' ', ''), ':', '') + '.bak' BACKUP LOG MainTest TO DISK = @strbackup WITH INIT; GO
查看日志使用情況
命令
dbcc sqlperf(logspace)
查看單個庫的VLF文件詳情,
use DatabaseXX DBCC LOGINFO;
如果日志文件過大,需要收縮,請執行如下腳本
USE [master] GO ALTER DATABASE 數據庫名稱 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 數據庫名稱 SET RECOVERY SIMPLE GO USE 數據庫名稱 GO declare @dbName nvarchar(100) set @dbName = (SLEECT name FROM sys.database_files WHERE type=1) GO DBCC SHRINKFILE(@dbName,1,TRUNCATEONLY) GO USE [master] GO ALTER DATABASE 數據庫名稱 SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE 數據庫名稱 SET RECOVERY FULL
需要注意的是,將數據庫由簡單模式切換到完整模式后,需要做一次完整或者差異備份,日志才會按照完整模式的形式增長。
參考地址: