我的数据库容量是80G,把数据库表的数据清空后,数据库容量还是80G,但是在往清空的表中插入数据,容量却是没变,请大侠告诉我这是为什么好嘛? 谢谢了。

解决方案 »

  1.   

    --收缩数据库
    USE DBNAME
    GO
    DBCC SHRINKDATABASE(N'DBNAME' )
    GO--收缩数据库文件
    USE DBNAME
    GO
    DBCC SHRINKFILE (N'数据文件名' , 0, TRUNCATEONLY)
    GO
      

  2.   


    2楼已经说了,SQL Server不会因为删除数据而直接收缩数据文件的大小。要减少数据文件所占的空间,需要手工收缩,查看3楼。但也有种情况,就是删除后,实际占用的空间仍未释放,这点与ORACLE的HWM(High Water Mark)高水位线一样,就是使用数据后,会在page上有一个所占空间空间的标志,虽然数据删了,但这标志还在,SQL Server认的是标志所指示的空间。这时候用dbcc updagesuage 对这样的标志重新整理后,就会显示更为准确的空间使用情况。http://msdn.microsoft.com/zh-cn/library/ms188414.aspx