SQL Server 日志文件过大预防及解决方法

事务日志文件(Transaction Log File)是用来记录数据库更新情况的文件,扩展名为LDF。 在 SQL Server 2000 中,如果设置了自动增长功能,事务日志文件将会自动扩展。一般情况下,在能够容纳两次事务日志截断之间发生的最大数量的事务时,事务日志的大小是稳定的,事务日志截断由检查点或者事务日志备份触发。然而,在某些情况下,事务日志可能会变得非常大,以致用尽空间或变满。通常,在事务日志文件占尽可用磁盘空间且不能再扩展时,您将收到如下错误消息:

引用内容 引用内容
Error:9002, Severity:17, State:2
The log file for database ’%.*ls’ is full.

除了出现此错误消息之外,SQL Server 还可能因为缺少事务日志扩展空间而将数据库标记为 SUSPECT。有关如何从此情形中恢复的其他信息,请参见 SQL Server 联机帮助中的“磁盘空间不足”主题。

另外,事务日志扩展可能导致下列情形:

·非常大的事务日志文件。
·事务可能会失败并可能开始回滚。
·事务可能会用很长时间才能完成。
·可能发生性能问题。
·可能发生阻塞现象。

原因

事务日志扩展可能由于以下原因或情形而发生:

·未提交的事务
·非常大的事务
·操作:DBCC DBREINDEX 和 Create INDEX
·在从事务日志备份还原时  
·客户端应用程序不处理所有结果  
·查询在事务日志完成扩展之前超时,您收到假的“Log Full”错误消息  
·未复制的事务

解决方法

方法一:清空日志

1) 打开查询分析器,输入命令 BACKUP LOG 数据库名 WITH NO_LOG(或者DUMP TRANSACTION 数据库名 WITH NO_LOG )
2) 再打开企业管理器→右键你要压缩的数据库→所有任务→收缩数据库→收缩文件→选择日志文件→在收缩操作里选择收缩文件至M,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

方法二:生成新的日志文件

1) 分离数据库
2) 重命名/删除LOG文件
3) 附加数据库(重新生成日志文件)

此法生成新的LOG,大小只有500多K。这种方法有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失,建议使用第一种方法。

如果以后不想要它变大,SQL Server 2000下使用:

在数据库上点右键→属性→选项→故障恢复→简单模型

或用SQL语句:

alter database 数据库名 set recovery simple

评论: 0 | 引用: 0 | 查看次数: 7295
发表评论
登录后再发表评论!