Alwayson如何截断日志

数据库一旦搭建alwayson, 则日志无法用简单日志, 必须采用完整日志。 生产环境的完整日志天长日久会很庞大, 如何处理?


在 d 盘下创建 Tools\bat_tools 文件夹

1. 创建 backup_log.sql 文件, 脚本如下:

use [dbName]
declare @bakfile nvarchar(100)--@bakfile备份文件名
set @bakfile='d:\database_bak\log_bak_'+convert(nvarchar(8),getdate(),112)+'.log'
BACKUP LOG [dbName] TO DISK= @bakfile WITH RETAINDAYS= 1,COMPRESSION --dbName为数据库名

dbcc shrinkfile(dbName_log,100) --dbName_log为数据库文件逻辑名称,100为希望日志收缩到的MB数
go

2. 创建 del_log.bat 文件, 内容如下:

sqlcmd -S localhost -U loginName -P password -i d:\tools\bat_tools\backup_log.sql
@echo off
forfiles /P D:\database_bak /s /m *.log /d -7 /c "cmd /c del /q @path " 

执行备份操作, 完成之后删除备份文件夹下所有 .log 结尾的超过7天的文件。


3. 创建计划任务:

Alwayson如何截断日志_第1张图片

这个过程比较简单就不再赘述了。

你可能感兴趣的:(SQL,Server,-,AlwaysOn)