• SQL 收缩数据库日志的几种办法 (2005与2008 略有区别)


    在SQL Server 2000/2005中可以快速压缩日志log文件,通过SQL,

    方法一:

    ---DBTEST 为数据库名,顺序最好别乱。注意要先截断再清空,最后收缩!

    backup log DBTEST with no_log  --截断事务日志

    dump transaction DBTEST with no_log  --清空日志

    DBCC shrinkdatabasse ('DBTEST',TRUNCATEONLY) 收缩数据库和日志库

     另有只收缩日志文件,语句如下 

    DBCC shrinkfile ('DBTEST_Log',1)--收缩日志文件 

    DBCC shrinkfile (N'DBTEST_Log' , 0, TRUNCATEONLY) --收缩日志文件

    执行以上语句可以快速压缩日志文件到1M。

    但是以上语句中前两行在SQL Server 2008下无法执行 ,

    第一行提示“Incorrect syntax near the keyword 'TRANSACTION'.”

    第二行提示“One or more of the options (no_log) are not supported for this statement. Review the documentation for supported options. ”

    第三行可以执行。但日志log文件没有任何变化。

    原来SQL Server 2008 已经不再支持 DUMP TRANSACTIONBACKUP LOG WITH NO_LOG,详情请看
      http://msdn.microsoft.com/zh-cn/library/ms187315%28SQL.90%29.aspx
      http://msdn.microsoft.com/zh-cn/library/ms186865.aspx 

    sql Server 2005说明中明确:包含 DUMP 语句是为了向后兼容。而 后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 使用 BACKUP。

    SQL Server 2008说明:BACKUP LOG WITH NO_LOG 和 WITH TRUNCATE_ONLY 选项已废止。使用完整恢复模式或大容量日志恢复模式时,如果必须删除数据库中的日志备份链,请切换至简单恢复模式。有关详细信息,请参阅有关从完整恢复模式或大容量日志恢复模式切换的注意事项。

    尝试方法二:  

    ----Logical Files :
    --CMS1.5_Data
    --CMS1.5_Log
    DBCC SHRINKFILE (N'CMS1.5_Log' , 1)
    GO

    无效。

    尝试方法三:  

    代码

    use DB_NAME
    sp_dboption DB_NAME, "trunc. log on chkpt.", true
    checkpoint
    sp_dboption DB_NAME, "autoshrink", true 

    每一行指令请单独执行。其中的DB_NAME是指Database Name,在执行完语法后的数小时至数十小时,该LOG档会逐渐释放空间,最后大约都会维持在数1024KB左右。

    有没有更快的方法呢?

    尝试方法四:(请提前备份文件!!)

    1. Detach数据库。
    2.删除log文件。
    3. 附加数据库,选移除log文件,此时SQL Server 会自动重新建立一个512K 的Log 文件。

    附图:

    SQL 收缩数据库日志的几种办法 (2005与2008 略有区别)

    方法五(没有试过,请提前备份文件!!):

     1. 停止 SQL Server 的服务
     2. 使用删除 Log文件
     3. 重新启动SQL Server 服务,此时SQL Server 会自动重新建立一个1MB 的Log 文件。
    方法六: (尘尘提供)

    先设置恢复模式为“简单恢复”模式,再收缩:

    USE BigData ;
    GO
    ALTER DATABASE BigData
    SET RECOVERY SIMPLE;--设置简单恢复模式
    GO
    DBCC SHRINKFILE (BigData_Log, 1);
    GO
    ALTER DATABASE BigData
    SET RECOVERY FULL;--恢复为原模式
    GO 

      方法七: (尘尘提供)

     USE BigData;

    GO
    BACKUP LOG DATABASENAME TO DISK='d: est.bak'
    -- Shrink the truncated log file to 1 MB.
    DBCC SHRINKFILE (Bigdata_Log, 1);
    GO

    文章出自

    http://www.cnblogs.com/downmoon/archive/2009/12/13/1623004.html。

  • 相关阅读:
    forEach 终止循环
    js 解决引用赋值修改新数组导致原数组跟着改变的问题
    es6判断数组是否包含某个元素
    tab css 切换效果
    js对象赋值影响原对象
    小程序返回上个页面 修改上个页面的数据
    小程序 scroll-view scroll-x 不生效
    proxy跨域处理
    常用Dos操作指令
    django全文检索
  • 原文地址:https://www.cnblogs.com/qzqdy/p/8041504.html
Copyright © 2020-2023  润新知