SQL查看所有表的大小

--查看所有表的大小
declare @id int
 
declare @type character(2) 

declare @pages int 

declare @dbname sysname
 
declare @dbsize dec(15,0)
 
declare @bytesperpage dec(15,0)
 
declare @pagesperMB dec(15,0)
 
create table #spt_space
 
(
 
[objid] int null,
 
[rows] int null,
 
[reserved] dec(15) null,
 
[data] dec(15) null,
 
[indexp] dec(15) null,
 
[unused] dec(15) null
 
)
 
set nocount on
 
-- Create a cursor to loop through the user tables
 
declare c_tables cursor for
 
select id from sysobjects where xtype = 'U'
 
open c_tables fetch next from c_tables into @id
 
while @@fetch_status = 0
 
begin
 
/* Code from sp_spaceused */
 
insert into #spt_space (objid, reserved)
 
select objid = @id, sum(reserved)
 
from sysindexes
 
where indid in (0, 1, 255) and id = @id
 

select @pages = sum(dpages)
 
from sysindexes
 
where indid < 2
 
and id = @id
 
select @pages = @pages + isnull(sum(used), 0)
 
from sysindexes
 
where indid = 255 and id = @id
 
update #spt_space set data = @pages
 
where objid = @id
 
/* index: sum(used) where indid in (0, 1, 255) - data */
 
update #spt_space
 
set indexp = (select sum(used)
 
from sysindexes
 
where indid in (0, 1, 255)
 
and id = @id) - data
 
where objid = @id
 
/* unused: sum(reserved) - sum(used) where indid in (0, 1, 255) */
 
update #spt_space
 
set unused = reserved - (
 
select sum(used)
 
from sysindexes
 
where indid in (0, 1, 255) and id = @id
 
)
 
where objid = @id
 
update #spt_space set [rows] = i.[rows]
 
from sysindexes i
 
where i.indid < 2 and i.id = @id and objid = @id 

fetch next from c_tables into @id
 
end
 
select TableName = (select left(name,60) from sysobjects where id = objid),
 
[Rows] = convert(char(11), rows),
 
ReservedKB = ltrim(str(reserved * d.low / 1024.,15,0) + ' ' + 'KB'),
 
DataKB = ltrim(str(data * d.low / 1024.,15,0) + ' ' + 'KB'),
 
IndexSizeKB = ltrim(str(indexp * d.low / 1024.,15,0) + ' ' + 'KB'),
 
UnusedKB = ltrim(str(unused * d.low / 1024.,15,0) + ' ' + 'KB')
 
from #spt_space, master.dbo.spt_values d
 
where d.number = 1
 
and d.type = 'E'
 
order by reserved desc
 
drop table #spt_space
 
close c_tables
 
deallocate c_tables

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱生活的泷哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值