这几天需要对数据库里的表的使用情况做一个了解,于是用到了sp_spaceused这个系统过程,直接从帮组文件里抄下了如下一段:


语法:sp_spaceused
[[ @objname = ] 'objname' ] [,[ @updateusage = ] 'updateusage' ]


sp_spaceused [[ @objname = ] 'objname' ] 
[,[ @updateusage = ] 'updateusage' ]

参数

[ @objname =] 'objname'

请求其空间使用信息的表、索引视图或队列的限定或非限定名称。仅当指定限定对象名称时,才需要使用引号。如果提供完全限定对象名称(包括数据库名称),则数据库名称必须是当前数据库的名称。

如果未指定 objname,则返回整个数据库的结果。

objname 的数据类型为 nvarchar(776),默认值为 NULL。

[ @updateusage =] 'updateusage'

指示应运行 DBCC UPDATEUSAGE 以更新空间使用信息。当未指定 objname 时,将对整个数据库运行该语句;否则,将对 objname 运行该语句。值可以是 truefalseupdateusage 的数据类型为 varchar(5),默认值为 false

返回代码值

0(成功)或 1(失败)

结果集

如果省略 objname ,将返回以下结果集,以提供当前数据库大小信息。

列名 数据类型 说明

database_name

nvarchar(128)

当前数据库的名称。

database_size

varchar(18)

当前数据库的大小 (MB)。database_size 包括数据和日志文件。

unallocated space

varchar(18)

未保留供数据库对象使用的数据库空间。

列名 数据类型 说明

reserved

varchar(18)

由数据库中对象分配的空间总量。

数据

varchar(18)

数据使用的空间总量。

index_size

varchar(18)

索引使用的空间总量。

unused

varchar(18)

为数据库中的对象保留但尚未使用的空间总量。

如果指定 objname,则将为指定对象返回以下结果集。

列名 数据类型 说明

name

nvarchar(128)

请求其空间使用信息的对象的名称。

不返回对象的架构名称。如果需要架构名称,请使用 动态管理视图获取等价大小信息。

rows

char(11)

表中现有的行数。如果指定的对象是 Service Broker 队列,该列将指示队列中的消息数。

reserved

varchar(18)

objname 保留的空间总量。

数据

varchar(18)

objname 中的数据所使用的空间总量。

index_size

varchar(18)

objname 中的索引所使用的空间总量。

unused

varchar(18)

objname 保留但尚未使用的空间总量。

备注

database_size 将始终大于 reserved + unallocated_space 之和,因为该值包括日志文件的大小,而 reservedunallocated_space 只考虑数据页。

在这两个结果集的 index_size 中,都包括了 XML 索引和全文索引使用的页。当指定 objname 时,对象的 XML 索引和全文索引所使用的页将计算在 reservedindex_size 结果中。

如果为具有空间索引的数据库或对象计算空间使用情况,则空间大小列(例如 database_sizereservedindex_size)将包含空间索引的大小。

指定 updateusage 时,SQL Server 数据库引擎将扫描数据库中的数据页,并根据每个表所使用的存储空间对 sys.allocation_unitssys.partitions 目录视图进行必要的更正。在某些情况下(例如删除索引后、表的空间信息不是当前信息时),需要执行该操作。updateusage 在大型表或数据库上运行会花费一些时间。只有当怀疑所返回的值不正确,而且该进程对数据库中的其他用户或进程没有负面影响时,才应使用 updateusage。如果首选该进程,则可以单独运行 DBCC UPDATEUSAGE。

注意:
在删除或重新生成大型索引时,或者在删除或截断大型表时,数据库引擎将延迟实际页释放及其关联锁,直至事务提交完毕为止。延迟的删除操作不会立即释放已分配的空间。因此,删除或截断一个大型对象后 sp_spaceused 随即返回的值可能不会影响可用的实际磁盘空间。有关延迟分配的详细信息,请参阅

权限

执行 sp_spaceused 的权限授予 public 角色。只有 db_owner 固定数据库角色的成员可以指定 @updateusage 参数。


 
                    
            
                

相关文章:

  • 2021-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-23
  • 2022-02-06
  • 2022-12-23
猜你喜欢
  • 2022-02-21
  • 2022-01-17
  • 2021-08-05
  • 2022-12-23
  • 2021-08-18
  • 2022-01-19
相关资源
相似解决方案