create table #tmp (name varchar(50),rows int,reserved varchar(50),data varchar(50),index_size varchar(50),unused varchar(50));
insert into #tmp (name,rows,reserved,data,index_size,unused) exec sp_msforeachTable "sp_spaceused '?'"
select t.name,t.[rows],t.reserved,t.data,t.index_size,t.unused from (
select *,CAST(replace(data,' KB','') as INT) as sort from #tmp) t order by t.sort desc
drop table #tmp