解决方法:
方法 1、sp_spaceused
方法 2、dbcc sqlperf
方法 3、dbcc showfilestats
方法 4、dbcc showcontig
方法 5、sys.dm_db_partiton_stats
--------------------------------------------------------------------------------------------------------------------------------------------------------------
方法 1、
execute sp_spaceused; 不带参数时返回当前数据库空间的整体使用情况。
execute sp_spaceused @objname=‘dbo.Nums‘;返回指定对象的空间使用信息
小心:sp_spaceused 返回的结果是来自系统的统计信息的,但是统计信息的如果还没有更新的话,这样会使得sp_spaceused返回的结果不准确。
正因如此 sp_spaceused 还加了一个参数 @updateusage;
所以 sp_spaceused 的完整格式是 sp_spaceused @objname=‘objname‘,@updateusage=‘updateusage‘;记得加第二个参数的时候会影响
SQL server 的性能。最好空闲时才这样做。
方法 2、
dbcc sqlperf 它只是针对日志文件(返回当前SQL server 实例的所有数据库的日志信息)
dbcc sqlperf(logspace);
方法 3、
dbcc showfilestats 返回数据库中各个数据文件的空间使用情况(不包函日志文件)
dbcc showfilestats;
方法 4、
dbcc showcontig 返回对象以区(extent)为度量的空间使用信息
dbcc showcontig(‘dbo.Nums);
方法 5、 sys.dm_db_partition_stats ,为对象的每个分区(不是extent,如‘表分区’中指的分区)返回一行
小结:
也可以把返回的信息写入自定义表中,方便以后估计未来一段时间内。空间的使用情况。