Sqlserver查詢出所有表的大小使用情況

ywxj_001發表於2017-10-25
第一種方法:
先查詢出源表資料:
select 'insert into @tmp exec sp_spaceused '+name From sys.tables with(nolock)  order by create_date desc;

建立臨時表並把查詢出來的源表資料insert進入臨時表,再查詢出來最後臨時表裡面的資料:
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

得出最後想要的資料結果。

第二種方法:
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







來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22996654/viewspace-2146327/,如需轉載,請註明出處,否則將追究法律責任。

相關文章