问题一:如何计算表空间的大小? 问题二:如何查询存储过程的最后修改时间?好像只有建立时间

解决方案 »

  1.   

    1.
    sp_spaceused 表名2.不知道.好像ms不建议去修改存储过程.而是重写.
      

  2.   

    问题一:如何计算表空间的大小?  
    sp_spaceused
    显示行数、保留的磁盘空间以及当前数据库中的表、索引视图或 SQL Server 2005 Service Broker 队列所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间。
    语法
     
    sp_spaceused [[ @objname = ] 'objname' ] 
    [,[ @updateusage = ] 'updateusage' ]
     备注
    database_size 将始终大于 reserved + unallocated_space 之和,因为该值包括日志文件的大小,而 reserved 和 unallocated_space 只考虑数据页。在这两个结果集的 index_size 中,都包括了 XML 索引和全文索引使用的页。当指定 objname 时,对象的 XML 索引和全文索引所使用的页将计算在 reserved 和 index_size 结果中。指定 updateusage 时,SQL Server 2005 Database Engine 将扫描数据库中的数据页,并根据每个表所使用的存储空间对 sys.allocation_units 和 sys.partitions 目录视图进行必要的更正。在某些情况下(例如删除索引后、表的空间空间信息不是当前信息时),需要执行该操作。updateusage 在大型表或数据库上运行会花费一些时间。只有当怀疑所返回的值不正确,而且该进程对数据库中的其他用户或进程没有负面影响时,才应使用 updateusage。如果首选该进程,则可以单独运行 DBCC UPDATEUSAGE。注意:  
    在删除或重新生成大型索引时,或者在删除或截断大型表时,数据库引擎 将延迟实际页释放及其关联锁,直至事务提交完毕为止。延迟的删除操作不会立即释放已分配的空间。因此,删除或截断一个大型对象后 sp_spaceused 随即返回的值可能不会影响可用的实际磁盘空间。有关延迟分配的详细信息,请参阅删除并重新生成大型对象。
     
    参数
    [ @objname =] 'objname'请求其空间使用信息的表、索引视图或队列的限定或非限定名称。仅当指定限定对象名称时,才需要使用引号。如果提供完全限定对象名称(包括数据库名称),则数据库名称必须是当前数据库的名称。 如果未指定 objname,则返回整个数据库的结果。objname 的数据类型为 nvarchar(776),默认值为 NULL。[ @updateusage =] 'updateusage'指示应运行 DBCC UPDATEUSAGE 以更新空间使用信息。当未指定 objname 时,将对整个数据库运行该语句;否则,将对 objname 运行该语句。值可以是 true 或 false。updateusage 的数据类型为 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_stats 或 sys.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 保留但尚未使用的空间总量。
     权限
    执行 sp_spaceused 的权限授予 public 角色。只有 db_owner 固定数据库角色的成员可以指定 @updateusage 参数。示例
    A. 显示表的磁盘空间信息
    以下示例报告 Vendor 表及其索引的磁盘空间信息。 复制代码 
    USE AdventureWorks;
    GO
    EXEC sp_spaceused N'Purchasing.Vendor';
    GO
     B. 显示数据库的已更新空间信息
    以下示例对当前数据库中使用的空间进行了汇总,并使用可选参数 @updateusage 确保返回当前值。  复制代码 
    USE AdventureWorks;
    GO
    EXEC sp_spaceused @updateusage = N'TRUE';
    GO
     
    问题二:如何查询存储过程的最后修改时间?好像只有建立时间做不到.
      

  3.   


    --1. 
    sp_spaceused 表名 --2
    存储过程不能查询最后修改时间,只有创建时间
      

  4.   

    2.
    如果是2005,可以查询:sys.objects
    select * from sys.objects里面有modify_date字段
      

  5.   

    2.如果是2005,可以用select * from sys.objects 里面有modify_date