1、查询表空间占用的磁盘空间

一般我们使用微软提供的 SQL Server Management studio 工具连接数据库。这个工具提供了方便查看表空间占用情况的功能。具体如下: sqlserver_query_table_disk

查询后的结果示例如下: sqlserver_query_table_diskinfo

对上面表的各列作一个介绍:
记录数: 即表里面有多少条数据;
保留(KB): 表占用磁盘空间的大小,单位是KB
数据(KB): 表的数据占用空间大小,单位是KB
索引(KB): 表的索引占用空间大小,单位是KB
未使用(KB): 保留空间减去数据和索引空间的值。

这里的保留空间相当于ORACLE的水位,如果未使用空间很大,说明水位很高。造成这种情况的原因一般是之前该表数据很多但是后面删除了。sqlserver对于这种情况是不会做空间收缩的,也没有像ORACLE那样的办法手工去减低水位。

要想释放这部分未使用空间,只能对表进行truncate操作或者删除重建。

如果没有这个工具,可以使用SQL查询,但是这个SQL查询不太准确,且没办法查询到

SELECT OBJECT_NAME(id) as tab,rows,(reserved*8)/1024 as size_MB
FROM SYS.sysindexes WHERE indid IN(0,1) and id in(select object_id from sys.tables )
order by size_MB desc
go