如何获取SQLServer数据库里表的占用容量大小计算机等级考试

文章作者 100test 发表时间 2009:09:14 22:42:41
来源 100Test.Com百考试题网


  其实只要使用系统内置的存储过程sp_spaceused就可以得到表的相关信息
  如:sp_spaceused tablename
  以下是为了方便写的一个存储过程,目的是把当前的所有表的相关信息全部都保存在一个指定的表里面
  CREATEPROCEDUREget_tableinfoAS
  ifnotexists(0select*fromdbo.sysobjectswhereid=object_id(N[dbo].[tablespaceinfo])andOBJECTPROPERTY(id,NIsUserTable)=1)
  createtable tablespaceinfo        --创建结果存储表
  (nameinfovarchar(50),
  rowsinfoint,reservedvarchar(20),
  datainfovarchar(20) ,
  index_sizevarchar(20),
  unusedvarchar(20))
  0deletefromtablespaceinfo--清空数据表来源:
  declare@tablenamevarchar(255) --表名称
  declare@cmdsqlvarchar(500)
  DECLAREInfo_cursorCURSORFOR
  0selecto.name  fromdbo.sysobjectsowhereOBJECTPROPERTY(o.id,NIsTable)=1
  ando.namenotlikeN#%% orderbyo.name
  OPENInfo_cursor
  FETCHNEXTFROMInfo_cursor
  INTO@tablename
  WHILE@@FETCH_STATUS=0
  BEGIN
  ifexists(0select*fromdbo.sysobjectswhereid=object_id(@tablename)andOBJECTPROPERTY(id,NIsUserTable)=1)
  executesp_executesql
  Ninsertintotablespaceinfo execsp_spaceused@tbname,
  N@tbnamevarchar(255),
  @tbname=@tablename
  FETCHNEXTFROMInfo_cursor
  INTO@tablename
  END
  CLOSEInfo_cursor
  DEALLOCATEInfo_cursor
  GO
  执行存储过程本文来源:百考试题网
  exec get_tableinfo
  查询运行该存储过程后得到的结果
  0select *
  from tablespaceinfo
  order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc

  编辑特别推荐:

  ·计算机三级的四个类别看看你适合哪个

  ·全国计算机等考三级数据库模拟试题及参考答案

  ·全国计算机等级考试三级数据库技术训练题



相关文章


“菜鸟”实战病光驱计算机等级考试
如何提高光驱的运行速度计算机等级考试
买什么样的光驱好?计算机等级考试
计算机三级pc技术辅导:文件分配表计算机等级考试
如何获取SQLServer数据库里表的占用容量大小计算机等级考试
显示卡BIOS刷新写入原理及实例计算机等级考试
超频引起显卡损坏计算机等级考试
识别病毒文件四个好方法计算机等级考试
在硬盘上合理放置重做日志文件计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛