sql查看所有表大小的方法

前端之家收集整理的这篇文章主要介绍了sql查看所有表大小的方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

代码如下:
502_4@declare @id int@H_502_4@declare @type character(2) @H_502_4@declare @pages int @H_502_4@declare @dbname sysname@H_502_4@declare @dbsize dec(15,0)@H_502_4@declare @bytesperpage dec(15,0)@H_502_4@declare @pagesperMB dec(15,0)

create table #spt_space@H_502_4@(@H_502_4@ [objid] int null,@H_502_4@ [rows] int null,@H_502_4@ [reserved] dec(15) null,@H_502_4@ [data] dec(15) null,@H_502_4@ [indexp] dec(15) null,@H_502_4@ [unused] dec(15) null@H_502_4@)

set nocount on

-- Create a cursor to loop through the user tables

declare c_tables cursor for@H_502_4@select id from sysobjects where xtype = 'U'

open c_tables fetch next from c_tables into @id

while @@fetch_status = 0@H_502_4@begin@H_502_4@ /* Code from sp_spaceused */@H_502_4@ insert into #spt_space (objid,reserved)@H_502_4@ select objid = @id,sum(reserved)@H_502_4@ from sysindexes@H_502_4@ where indid in (0,1,255) and id = @id @H_502_4@ select @pages = sum(dpages)@H_502_4@ from sysindexes@H_502_4@ where indid < 2@H_502_4@ and id = @id select @pages = @pages + isnull(sum(used),0)@H_502_4@ from sysindexes@H_502_4@ where indid = 255 and id = @id update #spt_space set data = @pages@H_502_4@ where objid = @id /* index: sum(used) where indid in (0,255) - data */ update #spt_space@H_502_4@ set indexp = (select sum(used)@H_502_4@ from sysindexes@H_502_4@ where indid in (0,255)@H_502_4@ and id = @id) - data@H_502_4@ where objid = @id /* unused: sum(reserved) - sum(used) where indid in (0,255) */@H_502_4@ update #spt_space@H_502_4@ set unused = reserved - (@H_502_4@ select sum(used)@H_502_4@ from sysindexes@H_502_4@ where indid in (0,255) and id = @id@H_502_4@ )@H_502_4@ where objid = @id update #spt_space set [rows] = i.[rows]@H_502_4@ from sysindexes i@H_502_4@ where i.indid < 2 and i.id = @id and objid = @id fetch next from c_tables into @id@H_502_4@end

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

order by reserved desc

drop table #spt_space@H_502_4@close c_tables@H_502_4@deallocate c_tables@H_502_4@

猜你在找的MsSQL相关文章