SQL2008如何清空压缩数据库日志

 

编写人:左丘文

 

2015-4-10

近期在给一系统初始化资料时,不断的导入导出,因此一不小心,就将数据的SQL(sql2008R2)的是日志档弄得比数据库还大,给系统部署带来麻烦。因此想办法能否快速的将日志文件缩小到令人满意的504K。

今天在这里,我想与大家一起分享一下SQL2008中如何清空日志文档,在此做个小结,以供参考。有兴趣的同学,可以一同探讨与学习一下,否则就略过吧。


1.         采用我之前在SQL2005中的方法,发现已不能正常运行:

--sql 2005



1  DUMP  TRANSACTION ECM  WITH  NO_LOG
2  BACKUP  LOG ECM  WITH NO_LOG
3  DBCC



2.         由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:

方法一:

在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。



 1  -- sql 2008
 2   
 3      USE  [ master ]
 4      GO
 5      ALTER  DATABASE ECM  SET RECOVERY SIMPLE  WITH NO_WAIT
 6      GO
 7      ALTER  DATABASE ECM  SET RECOVERY SIMPLE    -- 简单模式
 8       GO
 9      USE ECM
10      GO
11  DBCC SHRINKFILE (N ' SCS_log ' ,  11, TRUNCATEONLY)



--这里要留意,要使用数据库逻辑名

sql server 2012压缩数据日志 sql2008压缩日志_日志文件

 

     1 GO


 2      USE  [ master ]
 3      GO
 4  
 5      ALTER  DATABASE ECM  SET RECOVERY  FULL  WITH NO_WAIT
 6  
 7      GO
 8  
 9      ALTER  DATABASE ECM  SET RECOVERY  FULL   -- 还原为完全模式
10        GO


优点:此清除日志所运行消耗的时间短,90GB的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内

即可完成。

缺点: 不过此动作最好不要经常使用,因为它的运行会带来系统碎片。普通状态下LOG和DIFF的备份即可截断日志。

此语句使用的恰当环境:当系统的日志文件异常增大或者备份LOG时间太长可能影响生产的情况下使用。

方法二:

最简单的一种方法是:
分离数据库
剪切(注意是剪切,不是删除)*.ldf到其他目录
附加数据库,选中*.mdf文件,附加时新建一个日志文件
确认没有问题后,把日志文件删除。

如碰到无法分离,请先停掉服务再进行。