我建索引的时候,遇到这个错误“NewsTable”表
- 无法创建索引“PK_NewsTable”。  
数据库 'cnahdata' 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。
无法创建约束。请参阅前面的错误消息。
语句已终止。
”但是我用网上的方法,把日志文件压缩到1M后,再进行该操作,还是不行。
试了很多方法,都不行。目前我的cnahdata.mdf是1.6G
日志cnahdata_log.ldf是1M网站运行都很正常,但就是我建索引的时候遇到这种情况!
表NewsTable里有25W左右的数据!希望大家能帮帮忙。感谢

解决方案 »

  1.   

    提供两种办法:
    一种方法:清空日志。
    1.打开查询分析器,输入命令 DUMP TRANSACTION 数据库名 WITH NO_LOG
    2.打开企业管理器,在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。(也可以直接在查询分析器里执行:alter database 数据库名 set recovery simple 
    3.右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。另一种方法有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。
    1: 删除LOG
    分离数据库 企业管理器->服务器->数据库->右键->分离数据库
    2:删除LOG文件
    附加数据库 企业管理器->服务器->数据库->右键->附加数据库
    此法生成新的LOG,大小只有500多K。
    注意:建议使用第一种方法。如果以后,不想要它变大。
      

  2.   


    exec xp_fixeddrives
    exec sp_helpdb 'cnahdata'运行这两个命令,把结果贴出来。
      

  3.   

    清空日志backup log UserExp with truncate_only// 不备份只截断
    dbcc shrinkfile(2,notruncate)//释放的空间保留在文件中,不给操作系统
    dbcc shrinkfile(2,truncateonly)//未使用的空间释放给操作系统
      

  4.   

    DUMP TRANSACTION 数据库名 WITH NO_LOG