zoukankan      html  css  js  c++  java
  • sql server 2012 如何收缩事务日志

    sql2008不再支持 BACKUP LOG 数据库名 WITH NO_LOG   语句 

    BACKUP Log zxta with no_log

    截断事务日志 sql2008 提示错误如下 
     BACKUP LOG 数据库名 WITH NO_LOG 
    Msg 3032, Level 16, State 2, Line 1
    此语句不支持一个或多个选项(no_log)。请查阅文档以了解所支持的选项。

    事务日志截断

    若要避免数据库的事务日志被填满,例行备份至关重要。在简单恢复模式下,备份了数据库后会自动截断日志,而在完整恢复模式下,只有备份了事务日志后方才截断日志。但是,截断过程有时也可能发生延迟。有关识别和应对各种延迟因素的信息,请参阅可能延迟日志截断的因素。

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

    SQL SERVER 2008 中 BACKUP LOG WITH TRUNCATE_ONLY 已不再被支持,要收缩数据库日志,首先需要通过将数据库恢复模式设置为 SIMPLE 来截断该文件。

    语句如下:

    --BACKUP log testDB with no_log
    
    USE testDB; 
    GO
    
    -- Truncate the log by changing the database recovery model to SIMPLE.
    
    ALTER DATABASE testDB SET RECOVERY SIMPLE;
    
    GO
    
    -- Shrink the trun cated log file to 1 MB.
    
    DBCC SHRINKFILE (testDB_Log, 1); 
    GO
    
    -- Reset the database recovery model.
    
    ALTER DATABASE testDB SET RECOVERY FULL; 
    GO

    也可以通过图形界面来完成。

    通过先备份日志,然后再收缩日志文件,如下:

     --先执行完整备份
    backup database mydb to disk='D:dbmydb.bak' WITH init;
    --再执行日志备份(默认追加)
    backup log mydb to disk='D:dbmydb.bak' 
    --修改数据库恢复模式
    ALTER DATABASE mydb SET RECOVERY SIMPLE
    --收缩日志至10MB 
    DBCC SHRINKFILE (mydb_Log, 10); 
    --修改数据库恢复模式
    ALTER DATABASE testDB SET RECOVERY FULL; 
  • 相关阅读:
    数据类型装换
    变量及数据类型
    27 网络通信协议 udp tcp
    26 socket简单操作
    26 socket简单操作
    14 内置函数 递归 二分法查找
    15 装饰器 开闭原则 代参装饰器 多个装饰器同一函数应用
    12 生成器和生成器函数以及各种推导式
    13 内置函数 匿名函数 eval,exec,compile
    10 函数进阶 动态传参 作用域和名称空间 函数的嵌套 全局变量
  • 原文地址:https://www.cnblogs.com/gates/p/5067450.html
Copyright © 2011-2022 走看看