>MSSQL清除日志文件的技巧(mssql 清除LOG)
Microsoft SQL Server(MSSQL)是一款成熟稳定的关系型数据库管理系统,它通常使用日志文件来监控和管理数据库内的活动,以保持数据的完整性和一致性,但是,随着业务的增长和日志文件的积累,它可能造成占用硬盘资源的不必要浪费,所以本文介绍了一些清理MSSQL日志文件的技巧,以提高硬盘空间的使用效率。
首先,介绍MSSQL的日志管理机制,它将日志文件分为了归档日志(archive log)和活动日志(active log)两种,归档日志通过定期备份计划备份至其他地方,而活动日志会永久保存在硬盘上,随着数据库的活动不断增加,活动日志文件将不断增长。硬盘空间逐渐消耗尽,这就需要我们定期进行日志清理,来释放硬盘资源。
有两种清理MS SQL日志文件的方式:
1.手动清理,使用Microsoft SQL Server Management Studio对日志文件进行清理,通过右击要清理的数据库,点击“任务”,之后点击“清理日志”,选择想要清理的日志文件,点击确定即可。
代码如下:
USE [master]
GO
BACKUP LOG [myDatabase] with TRUNCATE_ONLYGO
2.脚本清理,使用脚本进行日志清理,通常是定期运行,以保留足够的日志文件并在达到指定的大小并删除早期的日志文件。
代码如下:
DECLARE @Date DATETIME
DECLARE @DelLog VARCHAR(200) DECLARE @DelLogFile VARCHAR(200)
DECLARE @DatabaseName VARCHAR(200) DECLARE @MaxLogSize NUMERIC
SET @MaxLogSize = 5 /* Maximum Log Size in MB */ SET @DatabaseName = 'YourDatabaseName'
--CAN ONLY BE EXECUTED IN MASTERUSE master;
--GET MOST RECENT LOG BACKUP TIME
SELECT @Date = MAX(BACKUP_FINISH_DATE) FROM MSDB..BACKUPSET
WHERE TYPE = 'L'AND DATABASE_NAME = @DatabaseName
--CALCULATE THE TARGET LOG NAMESELECT @DelLog= 'L' +
REPLACE(CONVERT(VARCHAR, @Date, 112), '/', '') + '.ldf'
--DELETE THE LOG FILESELECT @DelLogFile = '\\YourServerName\MSSQL\Data\' + @DelLog
DECLARE @cmd VARCHAR(200)
SELECT @cmd = 'DEL "' + @DelLogFile + '"'EXEC master..xp_cmdshell @cmd
--CHECK FILE SIZE AND DELETE IF IT IS LESS THAN MAXSELECT @cmd = 'DIR "' + @DelLogFile + '"'
DECLARE @TempFileName VARCHAR(200)
DECLARE @Found BITSET @Found = 0
CREATE TABLE #Temp (filename VARCHAR(200))
INSERT #TempEXEC master..xp_cmdshell @cmd
SELECT @TempFileName = filename FROM #Temp
WHERE LEN(filename) > 8AND filename like '% LDF'
AND filename NOT LIKE '% Volume %'AND filename NOT LIKE '% Ne %'
AND CONVERT(NUMERIC, LEFT(filename, 7))
IF @TempFileName IS NOT NULLBEGIN
SELECT @Found = 1 SELECT @DelLog = @TempFileName
END
--DELETE THE LOG FILEIF @Found = 1
BEGIN SELECT @DelLogFile = '\\YourServerName\MSSQL\Data\' + @DelLog
SELECT @cmd = 'DEL "' + @DelLogFile + '"' EXEC master..xp_cmdshell @cmd
END
DROP TABLE #Temp GO
总之,MSSQL清理日志文件的技巧有助于保持数据库的空间结构,提高它的可用性和性能,可以使用手动或脚本清理的方式,根据业务情况混合使用,以实现最佳的空间效率。