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

发表于:2015-4-14 09:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:左丘文    来源:51Testing软件测试网采编

  近期在给一系统初始化资料时,不断的导入导出,因此一不小心,就将数据的SQL(sql2008R2)的是日志档弄得比数据库还大,给系统部署带来麻烦。因此想办法能否快速的将日志文件缩小到令人满意的504K。
  今天在这里,我想与大家一起分享一下SQL2008中如何清空日志文档,在此做个小结,以供参考。有兴趣的同学,可以一同探讨与学习一下,否则就略过吧。
  1.         采用我之前在SQL2005中的方法,发现已不能正常运行:
  --sql 2005
  1 DUMP TRANSACTION ECM WITH  NO_LOG
  2 BACKUP LOG ECM WITH NO_LOG
  3 DBCC SHRINKDATABASE(ECM)
  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)
  --这里要留意,要使用数据库逻辑名
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文件,附加时新建一个日志文件
  确认没有问题后,把日志文件删除。
  如碰到无法分离,请先停掉服务再进行。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号