SqlServer日志文件过大的处理方法
SqlServer日志文件过大的处理方法
2012-08-07 16:54:58| 分类: sqlserver 2008 | 标签:sqlserver日志 日志过大处理 |字号大中小 订阅
最近遇到某个MSSqlServer2008 数据库的日志文件过于庞大,数据文件4G,日志文件达到80G。 日志文件这么大的原因还得从数据库的恢复模式说起: 三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式。通常,数据库使用完整恢复模式或简单恢复模式。而大容量模作为完整模式的补充,比如需要一次性导入大量数据,这会产生大量日志,可以暂时切换到大容量日志模式可以提高性能,减少日志大小。大容量日志模式为附加模块不常用,所以主要介绍简单和完整模式: 简单恢复模式是无日志备份的。在这种模式下会自动回收日志空间以减少空间需求,实际上不再需要管理事务日志空间。最新备份之后的更改不受保护。在发生灾难时,这些更改必须重做。只能恢复到上次的备份。 查看现场恢复模式为完整恢复模式,所有操作都记录log,所以日志才会这么大。(BTW:现场数据文件和日志文件在同一目录下,不建议这样做,最好放到不同的分区,这样如果一个分区坏了,还可以恢复,否则....)。 查询资料网上说收缩文件,使用了效果不理想。继续查询资料得出结果:要先截断日志再收缩。例如我拿了另外相对较小的一个数据库做测试. 开始时候数据库文件大小为:数据文件94M,而日志文件为425M。 图一:数据库初始大小: 执行收缩操作:在数据库右键-任务-收缩-文件。在文件类型选择日志,点击确定,待执行完毕后。刷新【注意这里一定要刷新】查看文件数据库属性发现效果很不理想,只减少了19M。下图为收缩之后的效果: 图二:第一次收缩 于是就进行日志截断。日志截断可以使用命令行【BACKUP LOG WITH TRUNCATE_ONLY】来做。但是这样,就可能导致之前的操作信息丢失。不能恢复到以前的某个时间点。另外可以通过备份来自动截断日志,MSSQLServer中全备份是不会截断日志的,备份日志文件可以自动截断日志。接下来做日志备份:数据库右键-任务-备份-文件。备份类型选择事物日志,点击确定执行。 这样截断日志之后,再执行收缩操作后查看日志文件大小只有6M: 图三:截断之后收缩效果 附:日志收缩和日志截断的区别: ◆日志收缩 |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25471510/viewspace-752305/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25471510/viewspace-752305/