您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

sp_spaceused

语法


sp_spaceused [<objname >[,1] ]

参数

<objname>

是表的名称,就是要报告该表的情况。如果省略,将显示当前数据库中使用的空间的摘要。

1

分别输出有关表的索引和 text/image 存储的信息。

示例

示例 1

报告为 titles 表分配(保留)的空间量、用于数据的空间量、用于索引的空间量和可用(未使用的)空间量:


sp_spaceused titles

name       rowtotal   reserved   data    index_size   unused
---------- ---------  ---------  ------- ----------   ----------
titles     18         46 KB      6 KB    4 KB         36 KB

示例 2

除有关 titles 表的信息外,还输出该表上各个索引的信息:


sp_spaceused titles, 1

index_name           size       reserved   unused
 -------------------- ---------- ---------- ---------- 
 titleidind           2 KB       32 KB      24 KB      
 titleind             2 KB       16 KB      14 KB      
     
 name       rowtotal   reserved   data   index_size unused
---------- --------  ---------  ------- ---------- ----------
titles           18      46 KB     6 KB       4 KB      36 KB

示例 3

分别显示 text/image 页存储使用的空间和该表使用的空间。text/image 存储的对象名称为“t”加上表的名称:


sp_spaceused blurbs,1

index_name           size       reserved   unused     
-------------------- ---------- ---------- ---------- 
blurbs               0 KB       14 KB      12 KB
tblurbs              14 KB      16 KB      2 KB

name       rowtotal reserved    data    index_size unused
---------- -------- ----------- ------- ---------- ---------- 
blurbs            6       30 KB    2 KB      14 KB      14 KB

示例 4

输出当前数据库中使用的空间的摘要:


sp_spaceused 

database_name   database_size 
--------------- --------------------------- 
master          5 MB 

reserved    data        index_size  unused 
---------   ---------   ----------- --------
2176 KB     1374 KB     72 KB       730 KB

示例 5

报告为事务日志保留的空间量和可供事务日志使用的空间量:


sp_spaceused syslogs

name       rowtotal   reserved   data    index_size   unused
---------- ---------  ---------  ------- ----------   ----------
syslogs    Not avail. 32 KB     32 KB   0 KB         0 KB

用法

使用 sp_spaceused 时,还存在一些其它注意事项:

  • sp_spaceused 显示指定的表或当前数据库中的所有表使用的数据页数和空间的估计值,以及表中行数的估计值。sp_spaceused 使用 rowcnt 内置函数计算 rowtotal 值。该函数使用的每个数据页平均行数值基于该对象的分配页中的值。该方法非常快,但结果为估计值,而且更新和插入活动会更改实际值。update statistics、dbcc checktabledbcc checkdb 命令更新每页行数的估计值,因此在运行这些命令中的一个之后,rowtotal 最准确。如果需要精确的行数,应使用 select count(*)

  • sp_spaceused 报告受表、聚簇索引和非聚簇索引影响的空间量。

  • sp_spaceused 报告的已分配(保留)空间量是数据、索引大小和可用(未使用的)空间的总和。

  • text 和 image 列(作为单独的数据库对象存储)使用的空间在 index_size 列中单独报告,并且包括在表的摘要行中。index_size 列中 text/image 存储的对象名称为“t”加上表的名称。

  • 对 syslogs 使用时,sp_spaceused 报告的 rowtotal 为“Not available”。请参见示例 5。