我的数据库的数据文件有17个G了,日志文件我收缩成10M,然后我对数据库做了收缩,但收缩效果不明显,这种情况会是什么原因造成的呢?

解决方案 »

  1.   


    例如设置了
    char(2000)这种大类型的字段.
    但其实数据只有很少,大量的空间别' '(空格)占用了.
      

  2.   


    例如设置了 
    char(2000)这种大类型的字段. 
    但其实数据只有很少,大量的空间被' '(空格)占用了.
      

  3.   

    还是先看下到底数据文件有多少availablespace,如果不多没必要收缩到很紧凑。
      

  4.   


    获得所有表的表记录,和使用空间的SQLexec sp_MSForEachTable 
    @precommand=N'
    create table ##(
    id int identity,
    表名 sysname,
    字段数 int,
    记录数 int,
    保留空间 Nvarchar(10),
    使用空间 varchar(10),
    索引使用空间 varchar(10),
    未用空间 varchar(10))',
    @command1=N'insert ##(表名,记录数,保留空间,使用空间,索引使用空间,未用空间) exec sp_spaceused ''?''
        update ## set 字段数=(select count(*) from syscolumns where id=object_id(''?'')) where id=scope_identity()',
    @postcommand=N'select * from ## order by id drop table ##'
      

  5.   

    exec sp_spaceused后的情况如下:
    database_size    unallocated_space
    5183.24MB         0.52MB
    reserved    data      index_size       unused
    5296688KB    3979648KB   1296784KB      20256KB
      

  6.   

    建议楼主使用SQL LiteSpeed进行备份,这样备份下来可以节省很多空间!