zoukankan      html  css  js  c++  java
  • 清理SQL Server日志释放文件空间的终极方法

    清理SQL Server日志释放文件空间的终极方法

     转自:http://www.cnblogs.com/dudu/archive/2013/04/10/3011416.html

    【问题场景】有一个数据库,它的名字叫CNBlogsText,日志文件霸占了23G硬盘空间,而事务日志已经截断(Truncate),实际日志内容很小,1G都不到。23G的空间只放1G不到的日志,就如同用一栋别墅养一只宠物,太奢侈了!秉承中华民族勤俭节约的美德,这种奢侈是绝对不允许的,必须要释放日志文件霸占的多余空间。

    但是,无论怎么收缩(Shrink)日志文件,空间就是不能释放,总是出现错误:

    Cannot shrink log file 2 (CNBlogsText_log) because of minimum log space required.

    之前解决过类似的问题,也写过一篇博客-SQL Server 2008事务日志清理,当时采用的最终解决方法是:

    • 将恢复模式由完整(Full)改为简单(Simple)
    • 收缩(Shrink)日志文件
    • 将恢复模式由简单(Simple)改为完整(Full)

    一直以为这就是终极方法,但是竟然没能终结这次遇到的问题。

    经过不懈的努力,终于找到真正的终极方法:

    1. Detach数据库(Detach之前一定要屏蔽所有对这个数据库的写入操作,这是血的教训

    2. 删除或重命名日志文件

    3. Attach数据库,这时会提示找不到日志文件

    4. 移除(Remove)这个找不到的日志文件,然后点击Ok进行Attach,SQL Server会在数据文件所在的文件夹自动创建一个新的日志文件完成Attach。

    5. 如果日志文件需要存放在另外的路径,要再通过Detach/Attach进行日志文件的移动操作。

    • Detach数据库
    • 将日志文件移动至新的位置
    • Attach数据库,修改日志文件的路径并完成Attach

    该终极方法的弊端是在操作期间,被操作的数据库不能被正常访问。

    这就是我找到的清理SQL Server日志释放文件空间的终极方法。也许有经验的你觉得这是常识,我才不管呢,只要能秒杀实际问题,就值得分享!

  • 相关阅读:
    Grodno 2015 (Urozero May 2015 Day 5) D Triangles
    Flea Circus(Project Euler 213)
    Prime triplets (Project Euler 196)
    ACM 博弈(难)题练习 (第二弹)
    Crosses Puzzles zoj 4018 (zju校赛)
    Petrozavodsk Summer-2015. Ivan Smirnov Contest 1 B Bloom
    ACM 博弈(难)题练习 (第一弹)
    2017 ACM区域赛(南宁站) 参赛流水账
    2017 CCPC 杭州 流水账
    2017 ACM区域赛(西安) 参赛流水账
  • 原文地址:https://www.cnblogs.com/duanweishi/p/4885632.html
Copyright © 2011-2022 走看看