sql server 2008 如何压缩日志?
用sql 语句实现。

解决方案 »

  1.   

    SQL 2005 企业管理器实现方式
    任务-》收缩-》文件
      

  2.   

    收缩数据库文件(如果不压缩,数据库的文件不会减小
    企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
    --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
    --选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成 
    --收缩数据库
    DBCC SHRINKDATABASE(库名)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles
    DBCC SHRINKFILE(1)
      

  3.   

      在SQL2000/2005/2008中可以快速压缩日志log文件,通过SQL,   方法一: 
      view plaincopy to clipboardprint?
    -- BigData为数据库名   
    DUMP   TRANSACTION  BigData  WITH  NO_LOG   
    BACKUP   LOG  BigData  WITH  NO_LOG   
    DBCC  SHRINKDATABASE(BigData )  
    -- BigData为数据库名
    DUMP   TRANSACTION  BigData  WITH  NO_LOG
    BACKUP   LOG  BigData  WITH  NO_LOG
    DBCC  SHRINKDATABASE(BigData ) 
      执行以上语句可以快速压缩日志文件到1M。  但是以上语句中前两行在SQL 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 2008 已经不再支持 DUMP  TRANSACTION 和 BACKUP 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    sql2005说明中明确:包含 DUMP 语句是为了向后兼容。而 后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 使用 BACKUP。  SQL2008说明:BACKUP LOG WITH NO_LOG 和 WITH TRUNCATE_ONLY 选项已废止。使用完整恢复模式或大容量日志恢复模式时,如果必须删除数据库中的日志备份链,请切换至简单恢复模式。有关详细信息,请参阅有关从完整恢复模式或大容量日志恢复模式切换的注意事项。     尝试方法二:     view plaincopy to clipboardprint?
    -- --Logical Files :   
    -- CMS1.5_Data  
    -- CMS1.5_Log  
    DBCC  SHRINKFILE (N ' CMS1.5_Log '  ,  1 )   
    GO  
    -- --Logical Files :
    -- CMS1.5_Data
    -- CMS1.5_Log
    DBCC  SHRINKFILE (N ' CMS1.5_Log '  ,  1 )
    GO 
      无效。   尝试方法三:  
      view plaincopy to clipboardprint?
    use   DB_NAME   
    sp_dboption  DB_NAME , "trunc.  log   on  chkpt.", true   
    checkpoint   
    sp_dboption  DB_NAME , "autoshrink", true   
    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 文件。  附图:                   方法五(没有试试,请提前备份文件!!):     1. 停止 SQL Server 的服务
        2. 使用删除 Log文件
        3. 重新启动SQL Server 服务,此时SQL Server 会自动重新建立一个1MB 的Log 文件。详情参考此链接:http://blog.csdn.net/downmoon/archive/2009/12/13/4997925.aspx
      

  4.   

    SQL 2005 企业管理器实现方式
    ---压缩日志前使用
    DUMP   TRANSACTION   xx WITH   NO_LOG
    任务-》收缩-》文件
      

  5.   

    用 企业管理器实现方式就不要说了,现在寻求用sql语句是实现。
    以前在sql server 2000下用:
    BACKUP LOG WITH NO_LOG和DBCC  SHRINKDATABASE(BigData ) 来实现。
    但是在sql server 2008下上面的语句已经不能用了。寻求高手帮助!!!!
      

  6.   

    2008下两种方法压缩日志1). 
       BACKUP LOG xxx TO DISK='xxx.trn'    收缩日志文件2)
       ALTER DATABASE SET RECOVERY SIMPLE
       收缩日志文件
       ALTER DATABASE SET RECOVERY FULL
      

  7.   

    to Garnett_KG:
    你的方法提示出错呀,不能运行。
    问题还没有解决,希望大家帮帮忙。
      

  8.   

    你该不会是直接copy我的代码就运行了吧?  ALTER DATABASE SET RECOVERY SIMPLE
      GO
       --收缩日志文件 , 
       DBCC SHRINKFILE ('日志文件逻辑名' , 0, TRUNCATEONLY)
       GO
      ALTER DATABASE SET RECOVERY FULL
      GO
      

  9.   

    楼主,最简单的办法用现成的软件
    这个软件叫trunc sql server 日志收缩工具,几百K才.我一直用
    http://www.gotfile.net/download.php?file=01B04903228EE36F8B1D7CB51A888C74698D8C0B.rar
      

  10.   

    to Garnett_KG:
    我在sql 2008下执行时出现下面错误:ALTER DATABASE SET RECOVERY SIMPLE
      GO
    上面这句提示下面错误:
    消息 156,级别 15,状态 1,第 1 行
    关键字 'SET' 附近有语法错误。
    消息 195,级别 15,状态 7,第 1 行
    'RECOVERY' 不是可以识别的 SET 选项。
    ALTER DATABASE SET RECOVERY FULL
      GO
    这一句提示下面错误:
    消息 156,级别 15,状态 1,第 1 行
    关键字 'SET' 附近有语法错误。
      

  11.   

    to Garnett_KG:
    我在sql 2008下执行时出现下面错误:ALTER DATABASE SET RECOVERY SIMPLE
      GO
    上面这句提示下面错误:
    消息 156,级别 15,状态 1,第 1 行
    关键字 'SET' 附近有语法错误。
    消息 195,级别 15,状态 7,第 1 行
    'RECOVERY' 不是可以识别的 SET 选项。
    ALTER DATABASE SET RECOVERY FULL
      GO
    这一句提示下面错误:
    消息 156,级别 15,状态 1,第 1 行
    关键字 'SET' 附近有语法错误。
      

  12.   

    你需要指定数据库的名字啊
    alter database db_name set recovery simple;