A-A+

SQLserver数据库出现日志文件已满的解决问题

2012年12月10日 计算机技术 评论 1 条 阅读 175 views 次

今天在对SQLserver数据库进行管理维护时,发现数据库的日志文件已经达到5个G了,加上网站本身页面和备份的数据库等文件,60多个G的一个磁盘已经剩下得不多了,导至网站因为SQLserver数据库日志文件太大而出现“ 数据库 'xx' 的日志已满。请备份该数据库的事务日志以释放一些日志空间”的问题。为了尽快使用网站恢复正常使用,技术部直接备份了原数据库日志文件,然后又新建了一个数据库日志,整理出一些磁盘空间出来,这是在出现问题第一个最为便利的方法。

出现此错误的原因是:

sql server数据库使用时间长了,日志文件会很大,占用过多系统资源,数据库可能会报 log full 的错误,甚至磁盘空间占满让数据库处于不可用状态,这个时候我们需要清理数据库,以前有人开发了数据库日志清理工具,好像还要收费,其实很简单就可以完成这个操作,请跟我来:

在解决问题之后,从网站又查找了两种网络上常用的方法,以备查阅使用,如下:

方法一:清空日志。

1、打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG

2、再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至: ,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

方法二:有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。

1、删除LOG

分离数据库 企业管理器->服务器->数据库->右键->分离数据库

2、删除LOG文件

附加数据库 企业管理器->服务器->数据库->右键->附加数据库

此法生成新的LOG,大小只有500多K。

注意:建议使用第一种方法。

如果以后,不想要它变大:SQL2000下使用:在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型,或用SQL语句:alter database 数据库名 set recovery simple,另外,数据库属性有两个选项,与事务日志的增长有关:Truncate log on checkpoint(此选项用于SQL7.0,SQL 2000中即故障恢复模型选择为简单模型)

当执行CHECKPOINT 命令时如果事务日志文件超过其大小的70% 则将其内容清除在开发数据库时时常将此选项设置为True

定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint 选项设为True 时才能进行。

注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。

标签:

1 条留言  访客:1 条  博主:0 条

  1. 林熊熊

    无意间来了你的博客,当回访下。

给我留言