• SQL2008R2 收缩数据库问题


    (转自此处:https://www.cnblogs.com/strayromeo/p/6961758.html,谢谢)

    数据库的日志文件(*.ldf)越来越大,怎么办?

      收缩吧。收缩日志文件的操作真不简单哟,还跟数据库的恢复模式有关啊。

    一、“简单恢复模式”时的日志收缩

    1. 截断日志

      当数据库的恢复模式为“简单”的时候,日志文件会在以下情况被截断: (1)完整备份

    (2)遇到检查点(checkpoint)

    2. 手动收缩日志文件

      当日志被截断后,日志文件的内部空间就会标记为“可复用”,因此日志文件就不需要持续增长。关于日志文件空间状态的解释,详见http://jimshu.blog.51cto.com/3171847/1174474 

      手动收缩日志文件的操作可以参考本文稍后的说明。

    二、“完整恢复模式”时的日志收缩

      在完整恢复模式下,对数据进行完整备份或者遇到检查点,都不会对日志造成影响。因此,可能会导致日志文件不能被截断,也就是说,这些空间不能被循环使用。于是,日志文件将持续增长,甚至直逼硬盘空间的极限。此时,即使手动收缩日志文件,也不会减小文件空间,因为空间都被占用着。

      注意:“大容量日志恢复模式”与“完整恢复模式”的日志处理方法一致。

    1. 确认恢复模式

      以下是使用 SQL Server Management Studio 检查数据库的恢复模式。

     

    2. 完整备份

      日志备份之前,必须做过完整备份。

     

    注意:不要勾选“仅复制备份”选项。“仅复制备份”不会影响日志。

    3. 事务日志备份

      做过完整备份之后,可以随时进行事务日志备份。

     

    默认的选项,是备份后截断事务日志。

     

    注意:有很多情况会阻止日志截断,没有备份事务日志只是其中一种情况,也是最常见的情况。

    4. 手动收缩日志文件

      做过日志备份之后,日志被截断,大量空间被标记为“可复用”。一般情况下,这时候就可以进行“收缩文件”操作,以将“可复用”的空间从日志文件中移出,从而减小日志文件。

     

    三、非官方的操作方法

    1、临时改用简单恢复模式

      临时改为简单恢复模式,然后做一次完整备份,或者运行checkpoint执行检查点。当日志被截断后,再收缩日志文件,最后再改回完整恢复模式。

      甚至,在简单恢复模式时,可以直接修改日志文件的“初始大小”,改成一个很小的数值即可(系统会自动将日志文件收缩到可能的最小值)。

     

    注意:改回完整恢复模式后,请务必立即做一次完整备份。

    2、with no_log选项

      在旧版本里,可以使用 BACKUP LOG WITH NO_LOG,或者 WITH TRUNCATE_ONLY。但是,SQL Server 2008 已经删除了这些选项。

    3、分离后再附加

      分离这个数据库,然后删除日志文件。然后重新附加这个数据库,SQL Server 就会警告丢失了日志文件,如果忽略这个警告,系统会自动创建一个空的日志文件。 注意:可能会丢失部分数据,详见《丢失日志文件的风险与对策》 http://jimshu.blog.51cto.com/3171847/1341289

  • 相关阅读:
    vb.net 数组参与SQL语句的查询范例
    JQUERY范例
    DOS批处理释义
    GridVIew单元格合并
    [无关] 胡言乱语3
    [数据] ZZ 数据分析这点事
    [ZZ] Big Data 开源工具
    [python] ZZ 时间相关
    python 获取时间代码
    javascript基础之我见(1)深度理解原型链
  • 原文地址:https://www.cnblogs.com/HaiHong/p/8655385.html
Copyright © 2020-2023  润新知