遇到了这样的一个情况:
对SQL Server虽然设置了文件的自动增长,但查看可用空间时,其值为0,而用sp_spaceused 存储过程查看数据库内部空间使用情况,发现unallocated space的值为负值。
这是由于内部页计数出错而导致的,通过使用dbcc updateusage (0)对当前数据库进行页统计,就可以得出正确结果。
注释
DBCC UPDATEUSAGE 对表和聚集索引中 sysindexes 表的 rows、used、reserved 和 dpages 列进行更正。不对非聚集索引的大小信息进行维护。
如果 sysindexes 中没有不正确的内容,DBCC UPDATEUSAGE 则不返回数据。如果发现不正确的内容,并对其进行更正,同时没有使用 WITH NO_INFOMSGS 选项,UPDATEUSAGE 就会返回 sysindexes 中所更新的行和列。
使用 UPDATEUSAGE 以与空间使用计数器同步。DBCC UPDATEUSAGE 在大表或大数据库上运行可能会需要一些时间,所以通常只在怀疑 sp_spaceused 所返回的值不正确时使用。返回表或索引的空间信息之前,sp_spaceused 接受可选参数以运行 DBCC UPDATEUSAGE。