SQL SERVER2005事务日志已满 若要查明无法重用日志中的空间的原因发布时间:2014/6/4 18:01:00 阅读次数:

  

我建索引的时候,遇到这个错误

“NewsTable”表
- 无法创建索引“PK_NewsTable”。  
数据库 ’cnahdata’ 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。
无法创建约束。请参阅前面的错误消息。
语句已终止。


但是我用网上的方法,把日志文件压缩到1M后,再进行该操作,还是不行。
试了很多方法,都不行。

目前我的cnahdata.mdf是1.6G
日志cnahdata_log.ldf是1M

网站运行都很正常,但就是我建索引的时候遇到这种情况!
表NewsTable里有25W左右的数据!

 

提供两种办法:
一种方法:清空日志。
1.打开查询分析器,输入命令
SQL code 
DUMP TRANSACTION 数据库名 WITH NO_LOG

2.打开企业管理器,在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。(也可以直接在查询分析器里执行:
SQL code
alter database 数据库名 set recovery simple 

3.右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

另一种方法有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。
1: 删除LOG
分离数据库 企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
附加数据库 企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K。
注意:建议使用第一种方法。如果以后,不想要它变大。