您的位置:首页 > 数据库

查看 SQL Server 2000 数据表的大小

2016-12-21 08:05 337 查看

SQL Server查看所有表大小、表行数和占用空间信息

一、查看表名和对应的数据行数
select a.name as '表名',b.rows as '表数据行数'
from sysobjects a inner join sysindexes b
on a.id = b.id
where a.type = 'u'
and b.indid in (0,1)
--and a.name not like 't%'
order by b.rows desc
二、查看表名和表占用空间信息
--判断临时表是否存在,存在则删除重建
if exists(select 1 from tempdb..sysobjects where id=object_id('tempdb..#tabName') and xtype='u')
drop table #tabName
go
create table #tabName(
tabname varchar(100),
rowsNum varchar(100),
reserved varchar(100),
data varchar(100),
index_size varchar(100),
unused_size varchar(100)
)

declare @name varchar(100)
declare cur cursor for
select name from sysobjects where xtype='u' order by name
open cur
fetch next from cur into @name
while @@fetch_status=0
begin
insert into #tabName
exec sp_spaceused @name
--print @name

fetch next from cur into @name
end
close cur
deallocate curselect tabname as '表名',rowsNum as '表数据行数',reserved as '保留大小',data as '数据大小',index_size as '索引大小',unused_size as '未使用大小'
from #tabName
--where tabName not like 't%'
order by cast(rowsNum as int) desc
--系统存储过程说明:--sp_spaceused 该存储过程在系统数据库master下。
exec sp_spaceused '表名' --该表占用空间信息
exec sp_spaceused --当前数据库占用空间信息

以下的文章主要是教会你如何正确查看 SQL Server 2000 数据表的大小,下面这几条相关的语句,可以返回每个SQL Server 2000 数据表大小,以下就是具体方案的描述,希望在你今后的学习中会有所帮助。

create table tmp (name varchar(50),rows int,reserved varchar(50), data varchar(50),index_size varchar(50),unused varchar(50)) insert into tmp (name,rows,reserved, data,index_size,unused) exec sp_msforeachTable @Command1="sp_spaceused '?'"sp_spaceused 't_vehicle' select * from tmp order by data desc drop table tmp 看单个表, 占用数据的情况
sp_spaceused '表名'
查看整个数据库所有表占用空间的情况 但发现从sysindexes中取表, 会少一部分SQL Server 2000 数据表(无主键,无索引的表)
select object_name(id) tablename,8*reserved/1024 reserved,rtrim(8*dpages/1024)+'Mb' used,8*(reserved-dpages)/1024 unused,8*dpages/1024-rows/1024*minlen/1024 free, rows,* from sysindexes where indid=1 order by reserved desc 查看整个数据库所有表占用空间的情况 但看起来比较麻烦
exec sp_MSforeachtable "exec sp_spaceused '?'"

drop table #Data
drop table #DataNew
create table #Data(name varchar(100),row varchar(100),reserved varchar(100),data varchar(100),index_size varchar(100),unused varchar(100))

declare @name varchar(100)
declare cur cursor for
select name from sysobjects where xtype='u' order by name
open cur
fetch next from cur into @name
while @@fetch_status=0
begin
insert into #data
exec sp_spaceused @name
print @name

fetch next from cur into @name
end
close cur
deallocate cur

create table #DataNew(name varchar(100),row int,reserved int,data int,index_size int,unused int)

insert into #dataNew
select name,convert(int,row) as row,convert(int,replace(reserved,'KB','')) as reserved,convert(int,replace(data,'KB','')) as data,
convert(int,replace(index_size,'KB','')) as index_size,convert(int,replace(unused,'KB','')) as unused from #data

select * from #dataNew order by data desc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  查看 SQL Server 2000