DBCC SHRINKDATABASE(MD,10)这个语句我也试过,好象不行。

解决方案 »

  1.   

    最近取得一点进展,我将一个有四百万条记录左右的表单独放到另外一个数据库中,对其进行压缩,结果空间少用了三分之一,然后再传回原来的数据库,再使用Shrinkdatabase,发现数据库容量随之减少。
    不知道各位有没有更好的方法?比如有没有方法直接对某一个表的数据空间进行压缩?
    我用ShowContig,表面上没什么效果,不知道是不是真的减少了存储碎片?如果我还有重新选择的机会的话,一定用Oracle。
      

  2.   

    1。DBCC CHECKDB
    2.用DBCC  SHOWCONTIG  检测你的数据库的扩展盘区的数目,再看看逻辑扫描碎片扩展盘区扫描碎的百分比,最好是0.00%.
    3.改变合适的FILL FACTOR的比例,
    4.祝你好运。
      

  3.   

    高手!
    我很急啊!数据库文件什么才能少?我的Server空间很快不够了!
      

  4.   

    高手!
    我很急啊!数据库文件什么才能少?我的Server空间很快不够了!
      

  5.   

    1.backup log md with truncate_only
    2.dbcc shrinkfile(日志文件名,容量)
    3.dbcc shrinkfile(数据文件名,容量)试试吧.
      

  6.   

    我已经用过sp_attach_single_file_db了,也就是说将日志全部去掉了。
    另外
    dbcc shrinkfile(file,0)我都用过了。
    dbcc shrinkdatabase(db,0)我也用过了。
    dbcc shrinkdatabase(db,truncateonly)我也用过了。至于分成两个数据库的建议,我不知道能不能不改应用程序而做到这一点?请指教!
      

  7.   

    现在的sp_spaceused 结果??
      

  8.   

    我重建了一个库,然后用dts将数据输过去,再去掉日志,然后shrinkdatabase,得到了目前来说最好的结果。
    database_name, database_size , unallocated space 
    MD           ,5099.50 MB     , 0.99 MB
    但我自己感觉数据量还是没这么多。
      

  9.   

    对不起,这两天一直忙,都没有时间上来,这个问题既然有那么多热心人给予答复,我觉得应该对可能的情况都分析过了。
    我再提醒一点,会不会系统骗你,因为sp_spaceused是从sysindexes表中获取统计数据,如果你的sysindexes表中的统计信息很久没有更新,统计出的数据就会不准确。你试试先用DBCC UPDATEUSAGE来更新一下信息,然后再统计。
      

  10.   

    你的目的就是减少使用空间吗?如果你的数据库设计合理,数据库文件增长其实是很正常的,就算是换ORACLE也是同样的道理。有些办法可以调节一下,不知道你的数据库是怎么设计的,你考虑一下什么方法可以采用。1、去掉不必要的索引;
    2、检查聚集索引
    定义聚集索引键时使用的列越少越好,这一点很重要。如果定义了一个大型的聚集索引键,则同一个表上定义的任何非聚集索引都将增大许多,因为非聚集索引条目包含聚集键。
    3、填充因子
    1)将只读表的填充因子设为100后重建索引。
    2)将部分索引的填充因子调大一点,再重建索引。但是这样在增加数据时可能需要更多的页面拆分,所以不要设得过大。
    4、除非真有必要,不要用视图索引。只有当视图的结果检索速度的效益超过了修改所需的开销时,才应在视图上创建索引。
    5、考虑用文件组来管理
    服务器上空间不够?还是只是一个分区上空间不够?你可以用文件组,创建多个文件,将不同文件放在不同磁盘或分区上。不过为了性能考虑,最好是放在不同的物理磁盘上。还可以考虑一下将表分开存放,不要把所有表都放在一个文件中。现在只想到这么多,回头再想想。