论坛风格切换
正版合作和侵权请联系 sd173@foxmail.com
 
  • 帖子
  • 日志
  • 用户
  • 版块
  • 群组
帖子
购买邀请后未收到邀请联系sdbeta@qq.com
  • 2090阅读
  • 0回复

[教程资料]SQL2008压缩日志(log)文件 [复制链接]

上一主题 下一主题
离线quen2008
 
发帖
*
今日发帖
最后登录
1970-01-01
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-12-17 10:13:44
在SQL2000/2005中可以快速压缩日志log文件,通过SQL
  方法一:

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


  附图:
  

  
  
  

  

    

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

   
1. 停止 SQL Server 的服务
   
2. 使用删除 Log文件
   
3. 重新启动SQL Server 服务,此时SQL Server 会自动重新建立一个1MB 的Log 文件。