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


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

     

    编写人:左丘文

     

    2015-4-10

    近期在给一系统初始化资料时,不断的导入导出,因此一不小心,就将数据的SQLsql2008R2)的是日志档弄得比数据库还大,给系统部署带来麻烦。因此想办法能否快速的将日志文件缩小到令人满意的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的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内

    即可完成。

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

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

    方法二:

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

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

     

     

    3、有关更多的技术分享,大家可以加入我们的技术群。

     

    欢迎加入技术分享群:238916811

     



  • 相关阅读:
    sqlserver备份后无法还原的解决方法
    Silverlight如何与JS相互调用
    【转】体验 Silverlight 5 3D开发之环境搭配篇
    C#实现邮箱搬家功能(1):Pop3协议介绍
    【转】针对大数据量表的优化查询
    Centos7Docker安装Redis
    Centos7.*Consul安装配置
    Centos7Docker安装nacos
    Centos7Docker安装neo4j
    Spring框架根据传入参数动态的修改注解属性的值
  • 原文地址:https://www.cnblogs.com/bribe/p/4419032.html
Copyright © 2020-2023  润新知