sql2012怎么定期自动收缩日志文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql2012怎么定期自动收缩日志文件相关的知识,希望对你有一定的参考价值。

参考技术A 将以下代码做个计划执行就行:
--数据库设置恢复模式为简单
ALTER DATABASE 数据库名 SET RECOVERY simple
--修改操作数据库
use 数据库名
--收缩数据库日志文件
dbcc shrinkfile(2)
--数据库设置恢复模式为完全
ALTER DATABASE 数据库名 SET RECOVERY FULL本回答被提问者采纳

SQL server 日志文件收缩 与日志文件备份

在完整恢复模式下,SQL server需要定期备份日志,否则,日志文件会一直扩大,直到占满硬盘大小,在进行一次完整备份之后,可以定期备份日志文件

脚本如下:

DECLARE @strbackup NVARCHAR(100)
 --改为日期加时间的
 SET @strbackup = \'F:\\bak\\Test_bak_log_\'
     + REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120), \'-\', \'\'), \' \',
                      \'\'), \':\', \'\') + \'.bak\'
 BACKUP LOG MainTest TO DISK = @strbackup WITH INIT;
 GO

查看日志使用情况

命令

dbcc sqlperf(logspace)

查看单个库的VLF文件详情,

use  DatabaseXX
DBCC LOGINFO;

如果日志文件过大,需要收缩,请执行如下脚本

USE [master]
GO

ALTER DATABASE 数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT
GO

ALTER DATABASE 数据库名称 SET RECOVERY SIMPLE
GO

USE 数据库名称
GO

declare @dbName nvarchar(100)

set @dbName = (SLEECT name FROM sys.database_files WHERE type=1)
GO

DBCC SHRINKFILE(@dbName,1,TRUNCATEONLY)
GO

USE [master]
GO

ALTER DATABASE 数据库名称 SET RECOVERY FULL WITH NO_WAIT
GO

ALTER DATABASE 数据库名称 SET RECOVERY FULL

需要注意的是,将数据库由简单模式切换到完整模式后,需要做一次完整或者差异备份,日志才会按照完整模式的形式增长。

参考地址:

https://www.cnblogs.com/woodytu/p/4935887.html

以上是关于sql2012怎么定期自动收缩日志文件的主要内容,如果未能解决你的问题,请参考以下文章

SQL server怎样修改主日志文件的增长上线

SQL server 日志文件收缩 与日志文件备份

如何清除SQLserver 日志

sql 2012收缩日志需要停镜像吗

SQL Server数据库的收缩一直在执行

如何清理SQL Server中的事务日志