清除MS SQL 服务器 LOG 文件(mssql 清除LOG)

2023-04-21 21:29:38 文件 服务器 清除

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 文件的常用手段,在实际实施时要根据实际情况选择合适的清理方法。

相关文章