• sql2005 查看数据库或表大小的系统存储过程 sp_spaceused


    这几天需要对数据库里的表的使用情况做一个了解,于是用到了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)

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

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

    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 参数

  • 相关阅读:
    DS博客作业03--栈和队列
    DS博客作业02--线性表
    DS博客作业01--日期抽象数据类型设计与实现
    C语言博客作业06--结构体&文件
    DS博客作业08--课程总结
    DS博客作业07--查找
    DS博客作业06--图
    DS博客作业05--树
    DS博客大作业--树 (陈梓灿组)
    DS博客作业03--栈和队列
  • 原文地址:https://www.cnblogs.com/gonghui/p/1562290.html
Copyright © 2020-2023  润新知