MS SQL 服务器 Log 文件是用来审计数据库中的事件和请求信息的必要文件。Log 文件一般包括一般日志,慢查询日志和系统错误日志等。由于 Log 文件的增长,会降低 MS SQL 服务器的性能,因此必须进行清理,以便有效运行 MS SQL 服务器。
要想正确清除 MS SQL 服务器 Log 文件,首先需要近确定已备份数据库完整文件(全备份),然后在 MS SQL 服务器中执行一些sql命令。首先,使用 USE 命令切换为要清理的 Log 所属数据库:
USE [testdb]
GO
再根据需求打开归档模式(如果要清理 Log 文件,必须处于归档模式):
ALTER DATABASE [testdb] SET RECOVERY SIMPLE WITH NO_WAIT;
GO
再使用 Checkpoint 命令:
CHECKPOINT;
GO
此命令会触发活动 Log 文件被收缩。最后,使用 DBCC SHRINKFILE 命令:
DBCC SHRINKFILE (testdb_log, 10);
GO
这条命令可以使梅森 Log 文件变得比最小文件大小小,其中 10 代表最小文件 10Mb 的大小。
此外,可以使用 SQL Server 内置 Job 服务清理 Log 文件。SQL Server 支持在特定的时间点定期清理 Log 文件,以避免 Log 文件的无限制增长。 例如,可以使用以下 SQL 语句定义一个 Job:
USE [msdb]
GO
EXEC msdb.dbo.sp_add_job @job_name = N’Maintance-Daily-ShrinkDB’,
@enabled = 1,
@notify_level_email = 10,
@owner_login_name = ‘sa’
GO
EXEC msdb.dbo.sp_add_jobstep @job_name = N’Maintance-Daily-ShrinkDB’,
@step_name = N’ShrinkDBJob’,
@subsystem = N’TSQL’,
@command = N’DBCC SHRINKFILE (testdb_log, 10);’,
@retry_attempts = 5,
@retry_interval = 5,
@on_success_action = 1
GO
最后,设置 Job 定期运行时间:
USE [msdb]
GO
EXEC msdb.dbo.sp_add_jobschedule @job_name = N’Maintance-Daily-ShrinkDB’,
@name = N’jobschedule’,
@enabled = 1,
@freq_type = 4,
@freq_interval = 1,
@freq_subday_type = 4,
@freq_subday_interval = 5
GO
以上就是清除 MS SQL 服务器 Log 文件的常用手段,在实际实施时要根据实际情况选择合适的清理方法。