SQL Server实现自动收缩数据库日志文件

本文介绍了一段SQL Server数据库日志文件自动收缩的脚本实现方法,该方法适用于非镜像复制订阅日志传送的情况。通过设置数据库恢复模式为简单模式、执行日志文件收缩、再恢复为完整模式三个步骤,实现对SQL Server数据库日志文件的自动收缩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 --在作业中 执行下面SQL代码 即可实现 自动收缩日志文件。(MSSQL 维护计划中没有提供自动收缩日志文件的功能)
 2 --非 镜像 复制订阅 日志传送的情况下 执行。 如果存在日志传送莫要执行 否则日志传送会失败
 3 declare @exec_sql nvarchar(1200),@simple_sql nvarchar(1200),@full_sql nvarchar(1200)
 4 declare @db_name varchar(128)
 5 declare @db_count int
 6 select @db_count=COUNT(1) from sys.databases where database_id >4
 7 declare @j int
 8 set @j =1
 9 
10 while @j<=@db_count 
11 begin
12         select @db_name=name from (select ROW_NUMBER() over(order by name)rn,name from sys.databases where database_id >4 )as tmp where rn=@j
13         SET @simple_sql=N' use [master] ' + Char(10) + Char(13) +'Alter DATABASE ['+@db_name+'] SET RECOVERY SIMPLE WITH NO_WAIT'
14         EXEC Sp_executesql  @simple_sql,N'@db_name varchar(128)',@db_name
15         
16         SET @exec_sql=N'USE ['+@db_name+']'+ Char(10) + Char(13) +'DBCC SHRINKFILE (N'''+@db_name+'_log'' , 0, TRUNCATEONLY)'
17         EXEC Sp_executesql  @exec_sql,N'@db_name varchar(128)',@db_name
18         
19         SET @full_sql =N' use [master] ' + Char(10) + Char(13) +'Alter DATABASE ['+@db_name+'] SET RECOVERY FULL WITH NO_WAIT'
20         EXEC Sp_executesql  @full_sql,N'@db_name varchar(128)',@db_name
21                 
22     set @j =@j+1
23 end

 

转载于:https://www.cnblogs.com/zengbin/p/4307015.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值