sql数据库大小mdf约为1.2g
ldf文件约为100m(日志)
在数据库属性里面设置了事务日志最大值为100M
上个月的时候系统提示事务日志已满
于是进行了收缩
但无效
便使用了一个sqlserver日志清除专家2.5的软件进行清除,提示清除成功
当时感觉使用正常
但这段时间感觉很慢,发现mdf已达到1.4g,但ldf一直没有增大,觉得奇怪,但找不到原因,于是再次执行收缩,发现数据库属性里面显示可用空间为0,速度仍慢,今天尝试将sql还原模式改为简单(以前为大容量),点击确认后系统提示“事务日志已满”,于是去看了一下ldf居然变成了200多兆,mdf却变成了1g左右,再收缩后ldf正常,只有几百k。于是还原为“大容量日志”,但数据库可用空间仍显示为0,速度略有加快。
不知道有没有朋友碰到过这种问题啊,真的很棘手!!!
正确又简单清除sql日志的方法是什么呢

解决方案 »

  1.   

    一种方法:清空日志。
    1.打开查询分析器,输入命令
    DUMP TRANSACTION 数据库名 WITH NO_LOG
    2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小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
    Auto shrink
    定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint 选项设为True 时才能进行。
    注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。