Sqlserver查詢出所有表的大小使用情況
第一種方法:
先查詢出源表數(shù)據(jù):
select 'insert into @tmp exec sp_spaceused '+name From sys.tables with(nolock) order by create_date desc;
創(chuàng)建臨時表并把查詢出來的源表數(shù)據(jù)insert進入臨時表,再查詢出來最后臨時表里面的數(shù)據(jù):
declare @tmp table(tbname varchar(255),tbrows int,reserved varchar(255),datatb varchar(255),index_size varchar(255),unused varchar(255))
insert into @tmp exec sp_spaceused table1
insert into @tmp exec sp_spaceused table2
insert into @tmp exec sp_spaceused table3
insert into @tmp exec sp_spaceused table4
insert into @tmp exec sp_spaceused
table5
insert into @tmp exec sp_spaceused
table6
insert into @tmp exec sp_spaceused
table7
insert into @tmp exec sp_spaceused
table8
insert into @tmp exec sp_spaceused
table9
insert into @tmp exec sp_spaceused
table10
select * from @tmp order by cast(replace(reserved,' KB','') as bigint) desc
得出最后想要的數(shù)據(jù)結(jié)果。
第二種方法:
select
tb.name as tbname
,ps.reserved_page_count * 8 as KB
,ps.row_count
From
sys.dm_db_partition_stats ps with(nolock)
,sys.tables tb with(nolock)
where
ps.object_id=tb.object_id
and tb.create_date >= '2017-10-23 21:44:15.010'
order by
ps.reserved_page_count desc