加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql查看所有表大小的方法

发布时间:2020-12-12 09:24:24 所属栏目:MsSql教程 来源:网络整理
导读:代码如下: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 n

代码如下: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,255) - data */ update #spt_space
set indexp = (select sum(used)
from sysindexes
where indid in (0,255)
and id = @id) - data
where objid = @id /* unused: sum(reserved) - sum(used) where indid in (0,255) */
update #spt_space
set unused = reserved - (
select sum(used)
from sysindexes
where indid in (0,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.,
IndexSizeKB = ltrim(str(indexp * d.low / 1024.,
UnusedKB = ltrim(str(unused * d.low / 1024.,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读