mssql 2008 批量 压缩日志

MSSQL数据库会随着时间,从而增大日志文件。从而过断时间要压缩下日志。但是MSSQL数据库新增、还原数据库会把数据库名、逻辑名搞得不一致。通过这个脚本可以自动生成所有库的压缩SQL脚本。本脚本排除了4个系统数据库master、tempdb、model、msdb;另外生成的这个脚本还有几个输出信息,就自己手动替换掉把。。


use master

declare @name varchar(max)
declare @dblogName varchar(max)
declare @i int
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID('hufr_temp') AND type in ('U'))
begin
DROP TABLE hufr_temp
end
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID('hufr_temp1') AND type in ('U'))
begin
DROP TABLE hufr_temp1
end


select name,identity(int,1,1) as num into hufr_temp FROM sys.databases where database_id>4 
select @i=COUNT(name) from hufr_temp
print 'use master'
while(@i>0)
begin
select @name=name from hufr_temp where num=@i
execute('select * into hufr_temp1  FROM ['+@name+'].sys.database_files')
select @dblogName=name FROM hufr_temp1 where type_desc='LOG'


--##########################################
print 'USE ['+@name+']'
print 'GO'
-- Truncate the log by changing the database recovery model to SIMPLE.
print 'ALTER DATABASE ['+@name+']'
print 'SET RECOVERY SIMPLE;'
print 'GO'
-- Shrink the truncated log file to 1 MB.
print 'DBCC SHRINKFILE (['+@dblogName+'], 10);'
print 'GO'
-- Reset the database recovery model.
print 'ALTER DATABASE ['+@name+']'
print 'SET RECOVERY FULL;'
print 'GO'
--##########################################


drop table  hufr_temp1
set @i-=1
end


--删除临时表
drop table hufr_temp
drop table hufr_temp1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值