事务日志扩展可能由于以下原因或情形而发生: · 未提交的事务 · 非常大的事务 · 操作:DBCC DBREINDEX 和 CREATE INDEX · 在从事务日志备份还原时 · 客户端应用程序不处理所有结果 · 查询在事务日志完成扩展之前超时,您收到假的“Log Full”错误消息 · 未复制的事务
事务日志扩展可能导致下列情形: · 非常大的事务日志文件。 · 事务可能会失败并可能开始回滚。 · 事务可能会用很长时间才能完成。 · 可能发生性能问题。 · 可能发生阻塞现象。
从上面可以看出,日志会出现比较大的增长问题主要还是在于程序的事务处理上。
对交易日志的日常备份工作可以有效的防止日志文件过分消耗磁盘空间。备份过程会将日志中不再需要的部分截除。截除的方法是首先把旧记录标记为非活动状态,然后将新日志覆盖到旧日志的位置上,这样就可以防止交易日志的体积不断膨胀。如果无法对日志进行经常性的备份工作,最好将数据库设置为"简单恢复模式"。在这种模式下,系统会强制交易日志在每次记录标记点时,自动进行截除操作,以新日志覆盖旧日志。
日志文件满而造成SQL数据库无法写入文件时,处理的方法:
l 清空日志。
n 打开查询分析器,输入命令
DUMP TRANSACTION 数据库名 WITH NO_LOG
n 再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。
l 该方法有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。
n 删除LOG
分离数据库企业管理器->服务器->数据库->右键->分离数据库
n 删除LOG文件
附加数据库企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K。
建议使用第一种方法