因项目查询速度要求,数据使用了alwayson做了主辅读写分离,查询通过辅库查询,分担服务器压力,提高查询速度。
使用了一段时间后,发现日志每天增加十几G,这个增长速度,硬盘空间怎么玩得起啊,在网上搜了好多资料,都没详细介绍处理的方法,都是说备份事务日志方式,截断事务日志,释放空间。
试了几种方式,1. 设置 Ship Transaction Logs ,打开事务日志备份,测试库这样设置可以成功运行,在我项目正式库上设置后,很遗憾,运行没有效果,不知道是正式库数据太多,还是其它原因,没办法只有再寻找其它方法。
2. 手动Back up Transaction Logs, 然后再Shrink , 运行了两次,日志终于变小了,可是手动备份,很麻烦,而且日志比较大,备份耗时耗空间耗性能。我想即然手动能这样搞,Transact-SQL肯定也可以,就上MSDN看下了,终于找到了解决方法。运行了几天,发现日志文件并没有变大,现在分享给大家。
搞个作业每天凌晨1点,2点自动跑一次。
BACKUP LOG [EMAS_BASE] TO DISK='NUL:' -- 备份事务日志,备份成NUL,就不用占硬盘空间
GO
USE [EMAS_BASE];
GO
DBCC SHRINKFILE (EMAS_BASE_1_Log, 7); --收缩数据库日志文件,收到7M
GO
DBCC SHRINKFILE (EMAS_BASE_Log, 7); --收缩数据库日志文件,收到7M,数据库有两个日志文件
GO