×

SQL Server日志定时清理

匿名 匿名 发表于2019-09-16 11:46:07 浏览28 评论0

抢沙发发表评论

sql server在运行过程中,尤其是使用一些数据交互操作过程中,会产生大量的日志;

日志的好处在于,会我们可以在数据库崩溃的时候,数据还原帮助。

但在实际工作中,数据的备份和增量做好,相对更为靠谱。在使用ETL工具数据清洗过程中,产生大量无用的日志,清理日志变成重要的工作。

个人的做法倾向于在数据库设置定时清理日志作业。

  • 1、具体作业步骤如下:

通过sql server自带的Microsoft SQL server Management Studio,连接数据库。

  • 2、找到sql server 代理,新建代理作业

SQL Server日志定时清理


输入作业名称:日志清理

所有者:默认sa管理员账户,清理日志需要权限等级,方便管理可以用默认sa账户

类别:方便管理可以选择【数据库维护】,或者其他类别。主要是考虑方便后续可以用第三方工具读取配置信息

  • 3、关键步骤,设置执行代码

SQL Server日志定时清理


步骤名称:clearlog

命令内容如下:

USE [master]
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE
GO
USE 数据库名 
GO
DBCC SHRINKFILE (N'日志文件名' , 0,TRUNCATEONLY)
GO
USE [master]
GO
ALTER DATABASE 数据库名 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 数据库名 SET RECOVERY FULL
GO
dbcc sqlperf(logspace)

关于【日志文件名】可以右键需要清理日志的数据库,选择属性,查看文件

SQL Server日志定时清理


逻辑名称:cw_log,就是记录日志信息文件

  • 4.清理日志的原理:

先数据库状态转化成简单模式,数据清理完毕后,恢复到完全模式。因此在清理日志的时候,设置时间,最好与数据库使用时间高峰期错开。

  • 5、设置代理时间

SQL Server日志定时清理


根据日志产生频率和增长情况,来设置是一天1次,还是1天多次,还是一周一次。

通过ETL工具定时执行某些作业操作完毕后,进行日志清理代理的调用。


群贤毕至

访客