sqlserver 计划任务 收缩数据库日志文件

阅读更多
针对之前的语句做了整合,只有日志文件大于1000M时,才进行收缩。减少对数据库的频繁操作,条件也可以进行更改。也可以获取磁盘剩余容量对其进行条件控制

里面的chedianjia是数据库的名字及chedianjia_log是日志文件的逻辑名字


--定义临时表用于存储查询后的结果集  
declare @db_table table 
(
  name nvarchar(50),
  size_mb float
)

--将查询到的数据库主文件及日志文件信息插入到临时表中(查询的文件大小单位是M)
insert into @db_table
select name, convert(float,size) * (8192.0/1024.0)/1024 as size_mb from [chedianjia].dbo.sysfiles

--定义日志文件变量
declare @size_mb float 
--获取日志文件大小 
select @size_mb = size_mb from @db_table where name = 'chedianjia_log'
if(@size_mb >1000)   --说明大于1个G了,需要执行日志文件收缩
	begin
		use master 
		--更改数据库模式为简单模式(为成功收缩日志文件做准备)  
		alter database chedianjia set recovery simple with no_wait  
		--更改数据库模式为简单模式  
		alter database chedianjia  set recovery simple  
		use chedianjia 
		--执行收缩方法  
		dbcc shrinkfile(N'chedianjia_log',0,truncateonly)   
		use master  
		--重新定义数据库类型
		alter database chedianjia  set recovery full with no_wait  
		alter database chedianjia  set recovery full  
	end


针对sql2012上述代码是放到步骤里面的,其余按界面提示设置即可。建议现在本地调试

你可能感兴趣的:(sqlserver 计划任务 收缩数据库日志文件)