资源描述:
《sql server 日志已满的处理方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SQLSERVER日志已满的处理方法(转)事务日志文件TransactionLogFile是用来记录数据库更新情况的文件,扩展名为ldf。在SQLServer7.0和SQLServer2000中,如果设置了自动增长功能,事务日志文件将会自动扩展。一般情况下,在能够容纳两次事务日志截断之间发生的最大数量的事务时,事务日志的大小是稳定的,事务日志截断由检查点或者事务日志备份触发。然而,在某些情况下,事务日志可能会变得非常大,以致用尽空间或变满。通常,在事务日志文件占尽可用磁盘空间且不能再扩展时,您将收到如下错误消息:Error:9002,
2、Severity:17,State:2Thelogfilefordatabase’%.*ls’isfull.除了出现此错误消息之外,SQLServer还可能因为缺少事务日志扩展空间而将数据库标记为SUSPECT。有关如何从此情形中恢复的其他信息,请参见SQLServer联机帮助中的“磁盘空间不足”主题。另外,事务日志扩展可能导致下列情形: ·非常大的事务日志文件。 ·事务可能会失败并可能开始回滚。 ·事务可能会用很长时间才能完成。 ·可能发生性能问题。 ·可能发生阻塞现象。原因事务日志扩展可能由于以下原因或情形而发生: ·未提交的事务
3、 ·非常大的事务 ·操作:DBCCDBREINDEX和CREATEINDEX ·在从事务日志备份还原时 ·客户端应用程序不处理所有结果 ·查询在事务日志完成扩展之前超时,您收到假的“LogFull”错误消息 ·未复制的事务解决方法日志文件满而造成SQL数据库无法写入文件时,可用两种方法:一种方法:清空日志。1.打开查询分析器,输入命令DUMPTRANSACTION数据库名WITHNO_LOG2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个
4、允许收缩到的最小M数,直接输入这个数,确定就可以了。另一种方法有一定的风险性,因为SQLSERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。1:删除LOG分离数据库企业管理器->服务器->数据库->右键->分离数据库2:删除LOG文件附加数据库企业管理器->服务器->数据库->右键->附加数据库此法生成新的LOG,大小只有500多K。注意:建议使用第一种方法。如果以后,不想要它变大。SQL2000下使用:在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。或用SQL语句:alterdatab
5、ase数据库名setrecoverysimple另外,如上图中数据库属性有两个选项,与事务日志的增长有关:Truncatelogoncheckpoint(此选项用于SQL7.0,SQL2000中即故障恢复模型选择为简单模型)当执行CHECKPOINT命令时如果事务日志文件超过其大小的70%则将其内容清除在开发数据库时时常将此选项设置为TrueAutoshrink定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25%当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文
6、件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncatelogoncheckpoint选项设为True时才能进行。注意:一般新建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。 /***************************************/ 今天早上一看服务器硬盘没有空间了,细查数据库日志达18G运行上次在网上找的文章修改数据库日志大小,,提示”数据库city日志已满。请备份该数据库的事务日志以释放一些日志空间。
7、”网上查了下相关资料,找到下面这个最好用的,把原来的18g数据库日志文件压缩到了100M效果非常明显.(本人只试过了前三步就OK了,后面的方法未验证)–压缩日志及数据库文件大小/*–特别注意请按步骤进行,未进行前面的步骤,请不要做后面的步骤否则可能损坏你的数据库.–*/1.清空日志DUMP TRANSACTION 库名 WITH NO_LOG2.截断事务日志:BACKUP LOG 数据库名 WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器–右键你要压缩的数据库–
8、所有任务–收缩数据库–收缩文件–选择日志文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了–选择数据文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数