sql server数据文件异常增长,才用了2年多,数据文件就有快50G了,日志文件是正常的,只有不到500M。
该数据库平常基本不怎么操作,只有到了月末时才会有数据的写入。
我已经收缩了数据库还是没用。
我想问下各位大大造成数据库异常增长的原因有那些?
又如何处理

解决方案 »

  1.   

    看看每张表的数据情况,把不需要的数据处理掉CREATE TABLE #TB
    (
     表名  sysname  ,
     记录数  int   ,
     保留空间 varchar(10) ,
     使用空间 varchar(10) ,
     索引空间 varchar(10) ,
     未用空间 varchar(10)
    )INSERT INTO #TB
    EXEC sp_MSForEachTable 'EXEC sp_spaceused ''?'''SELECT *
    FROM #TB  
       
    go  
    DROP TABLE #TB
      

  2.   

    两年达到50G,不算什么,有可能是数据量特别多,还有一个可能就是你的数据库有JOB(作业),每天备份数据,导致表的数据量特别大,因此:
    1、查看一下服务器上的作业,有没有针对你说的这个数据库的。
    2、用这个语句查一下,大数据量的表。
    select b.name,a.rowcnt from sysindexes a,sysobjects b 
    --你可以把100000改成你需要查询的数据行数
    where a.id=b.id and a.indid<2 and b.xtype='u' and rowcnt>100000
    可以把一些没有的备份数据清除,收缩一下数据库,腾出空间来。
      

  3.   

    看看哪些表占空间比较大。然后分析一下这些表的数据以及表的结构等CREATE TABLE tb_SpaceInfoTable
    (
       ID int identity(1,1),
       name sysname,
       rows char(11),
       reserved varchar(18),
       data varchar(18),
       index_size varchar(18),
       unused varchar(18)
    )
    GOEXEC SP_MSFOREACHTABLE
    @COMMAND1 = 'INSERT INTO tb_SpaceInfoTable(name,
                                               rows,
                                               reserved,
                                               data,
                                               index_size,
                                               unused)
                  EXEC SP_SPACEUSED ''?'''
    GOSELECT * FROM tb_SpaceInfoTable order by cast(replace(data,' KB','') as decimal(28,0)) desc
    GO