当前位置:主页>delphi盒子/delphi园地/编程技巧> 文章内容

SQL SERVER中如何得到一个TABLE的大小?

发布时间:2010-01-21 | QQ免费站
1楼: 各位大侠,请帮忙,谢谢: SQL SERVER中如何得到一个TABLE的大小? 就是取得一个表的占用的空间?
字串8

2楼: sp_spaceused tablename :)试试
字串9

3楼: sp_spaceused 显示行数、保留的磁盘空间以及当前数据库中的表所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间。 字串3

4楼: sp_spaceused tablename 字串9

5楼: 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(失败) 结果集 如果省略 objname,则返回两个结果集。 列名 数据类型 描述 database_name varchar(18) 当前数据库的名称。 database_size varchar(18) 当前数据库的大小。 unallocated space varchar(18) 数据库的未分配空间。 列名 数据类型 描述 reserved varchar(18) 保留的空间总量。 Data varchar(18) 数据使用的空间总量。 index_size varchar(18) 索引使用的空间。 Unused varchar(18) 未用的空间量。 如果指定参数,则返回下面的结果集。 列名 数据类型 描述 Name nvarchar(20) 为其请求空间使用信息的表名。 Rows char(11) objname 表中现有的行数。 reserved varchar(18) 为 objname 表保留的空间总量。 Data varchar(18) objname 表中的数据所使用的空间量。 index_size varchar(18) objname 表中的索引所使用的空间量。 Unused varchar(18) objname 表中未用的空间量。 注释 sp_spaceused 计算数据和索引使用的磁盘空间量以及当前数据库中的表所使用的磁盘空间量。如果没有给定 objname,sp_spaceused 则报告整个当前数据库所使用的空间。 当指定 updateusage 时,Microsoft® SQL Server™ 扫描数据库中的数据页,并就每个表使用的存储空间对 sysindexes 表作出任何必要的纠正。例如会出现这样一些情况:当除去索引后,表的 sysindexes 信息可能不是当前的。该进程在大表或数据库上可能要花一些时间运行。只有当怀疑所返回的值不正确,而且该进程对数据库中的其它用户或进程没有负面影响时,才应使用该进程。如果首选该进程,则可以单独运行 DBCC UPDATEUSAGE。 权限 执行权限默认授予 public 角色。 示例 A. 有关表的空间信息 下例报告为 titles 表分配(保留)的空间量、数据使用的空间量、索引使用的空间量以及由数据库对象保留的未用空间量。 USE pubs EXEC sp_spaceused ‘titles‘ B. 有关整个数据库的已更新空间信息 下例概括当前数据库使用的空间并使用可选参数 @updateusage。 USE pubs sp_spaceused @updateusage = ‘TRUE‘
字串7

6楼: select sysTableTemp.UsersName + ‘.‘ + sysTableTemp.ObjectsName as CompleteName, (pageTableTemp.PageSize * (isnull(sysTableTemp.AllData, 0))) As DataSizeUsed, ( case when sysTableTemp.indid = 1 Then pageTableTemp.PageSize * (isnull(sysTableTemp.IndexSizeUsed, 0)- isnull(sysTableTemp.DataSizeUsed, 0)) end) AS ClustedDataUsed from ( select v.low / 1024 as PageSize from master..spt_values v where v.number=1 and v.type=N‘E‘ ) as pageTableTemp, ( select sysindexes.indid, sysindexes.name as IndexName, sysobjects.name as ObjectsName, sysusers.name as UsersName, sysindexes.used as NonClusteredDataUsed, tempTable.DataSizeUsed, tempTable.IndexSizeUsed, tempTable.rows, tempTable.AllData from sysindexes, sysobjects, sysusers, ( select id, sum(case indid when 0 then sysindexes.dpages when 1 then sysindexes.dpages when 255 then isnull(sysindexes.used, 0) end) as DataSizeUsed, sum(case indid when 0 then isnull(sysindexes.used, 0) when 1 then isnull(sysindexes.used, 0) when 255 then isnull(sysindexes.used, 0) end) as IndexSizeUsed, sum(case indid when 0 then convert(int, rows) when 1 then convert(int, rows) end) as rows, sum(case when indid <= 0 then sysindexes.dpages + isnull(sysindexes.used, 0) else isnull(sysindexes.used, 0) end) as AllData from sysindexes group by sysindexes.id ) as tempTable where sysindexes.id = sysobjects.id and sysusers.uid = sysobjects.uid and tempTable.id = sysindexes.id and sysobjects.name not like ‘#%‘ and OBJECTPROPERTY(sysobjects.id, N‘IsMSShipped‘) <> 1 and OBJECTPROPERTY(sysobjects.id, N‘IsSystemTable‘) = 0 ) as sysTableTemp order by CompleteName, IsClusteredIndex DESC
字串1

7楼: 以下很经典,应该可以解决问题 SELECT 表名=case when a.colorder=1 then d.name else ‘‘ end, 表说明=case when a.colorder=1 then isnull(f.value,‘‘) else ‘‘ end, 字段序号=a.colorder,字段名=a.name, 标识=case when COLUMNPROPERTY( a.id,a.name,‘IsIdentity‘)=1 then ‘√‘else ‘‘ end, 主键=case when exists(SELECT 1 FROM sysobjects where xtype=‘PK‘ and name in ( SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then ‘√‘ else ‘‘ end, 类型=b.name,占用字节数=a.length, 长度=COLUMNPROPERTY(a.id,a.name,‘PRECISION‘), 小数位数=isnull(COLUMNPROPERTY(a.id,a.name,‘Scale‘),0), 允许空=case when a.isnullable=1 then ‘√‘else ‘‘ end,默认值=isnull(e.text,‘‘), 字段说明=isnull(g.[value],‘‘) FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype=‘U‘ and d.name<>‘dtproperties‘ left join syscomments e on a.cdefault=e.id left join sysproperties g on a.id=g.id and a.colid=g.smallid left join sysproperties f on d.id=f.id and f.smallid=0 --where d.name=‘要查询的表‘ --如果只查询指定表,加上此条件 order by a.id,a.colorder 字串6

8楼: 将sp_spaceused 里面的内容研究一下,这个问题解决。 各位大侠,能不能再帮我一下, 1、就是如何更新字段注释? 2、如果得到一个视图的基表和对应字段??sysdepends 里面只保存了所引用的字段,在syscolumns表中则只有视图字段名,而我现在想知道视图对应的,还有如果是视图字段是公式来的,那能不能得到它的公式?? 先谢谢了,分可以再加!!! 字串7

9楼: 好吧。我结帐了 字串6