查询sql数据库中表占用的空间大小.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
查询sql数据库中表占用的空间大小

查询sql数据库中表占用的空间大小 数据库 2010-08-09 20:22:15 阅读115 评论0 字号:大中小 订阅 一、 最近在给一家客户做系统维护时,需要查看数据库表的大小,相关的sql如下: 1. exec sp_spaceused 表名 --(SQL统计数据,大量事务操作后可能不准) 2. exec sp_spaceused 表名, true --(准确的表空间大小,但可能会花些统计时间) 3. exec sp_spaceused -- (数据库大小查询) 4. exec sp_MSforeachtable exec sp_spaceused ? --(所有用户表空间表小,SQL统计数据,,大量事务操作后可能不准) 5. exec sp_MSforeachtable exec sp_spaceused ?,true --(所有用户表空间表小,大数据库慎用) create table #t(name varchar(255), rows bigint, reserved varchar(20), data varchar(20), index_size varchar(20), unused varchar(20)) exec sp_MSforeachtable insert into #t exec sp_spaceused ? select * from #t drop table #t 二、 sp_spaceused显示行数、保留的磁盘空间以及当前数据库中的表所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间。 语法sp_spaceused [[@objname =] objname] [,[@updateusage =] updateusage] 参数[@objname =] objname 是为其请求空间使用信息(保留和已分配的空间)的表名。objname 的数据类型是 nvarchar(776),默认设置为 NULL。 [@updateusage =] updateusage 表示应在数据库内(未指定 objname 时)还是在特定的对象上(指定 objname 时)运行DBCC UPDATEUSAGE。值可以是 true 或 false。updateusage 的数据类型是 varchar(5),默认设置为 FALSE。 返回代码值0(成功)或 1(失败) 示例A. 有关表的空间信息下例报告为 titles 表分配(保留)的空间量、数据使用的空间量、索引使用的空间量以及由数据库对象保留的未用空间量。 USE pubs EXEC sp_spaceused titles B. 有关整个数据库的已更新空间信息下例概括当前数据库使用的空间并使用可选参数 @updateusage。 USE pubs sp_spaceused @updateusage = TRUE 不过此方法,只能查看一个表的大小,一个数据库中一般会有多个表,如何一次性查看某数据库的所有表大小呢? 第一种方法(较简单,看的有些吃力): exec sp_MSforeachtable exec sp_spaceused ? 第二种方法(较复杂,但看的比较清楚,原作者不详): 其实只要使用系统内置的存储过程sp_spaceused就可以得到表的相关信息      如:sp_spaceused tablename      以下是为了方便写的一个存储过程,目的是把当前的所有表的相关信息全部都保存在一个指定的表里面      CREATE PROCEDURE get_tableinfo AS      if not exists (select * from dbo.sysobjects where id = object_id(N[dbo].[tablespaceinfo]) and OBJECTPROPERTY(id, NIsUserTable) = 1)   create table tablespaceinfo             --创建结果存储表   (nameinfo varchar(50) ,   rowsinfo int , reserved varchar(20) ,   datainfo varchar(20) ,   index_size varchar(20) ,   unused varchar(20) )      delete from tablespaceinfo --清空数据表      declare @tablename varchar(255) --表名称      declare @cmdsql varchar(500)      DECLARE Info_curs

您可能关注的文档

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档