create table #temp ( name nvarchar(255) , rows bigint , reserved varchar(100) , data varchar(100) , index_size varchar(100) , unused varchar(100) ) create table #rs ( table_name nvarchar(500) , rows bigint , [reserved(MB)] varchar(100) , [data(MB)] varchar(100) , [index_size(MB)] varchar(100) , [unused(MB)] varchar(100) ) declare @tname varchar(255) , @sql varchar(1000); declare cur cursor for select table_schema + '.' + table_name tname , 'exec sp_spaceused ''' + table_schema + '.' + table_name + '''' sql from information_schema.tables where table_type = 'BASE TABLE' open cur; fetch next from cur into @tname, @sql; while @@FETCH_STATUS not in (-1, -2) begin insert #temp exec(@sql) insert #rs select @tname , rows , convert(bigint, replace(reserved, 'KB', '')) / 1024 , convert(bigint, replace(data, 'KB', '')) / 1024 , convert(bigint, replace(index_size, 'KB', '')) / 1024 , convert(bigint, replace(unused, 'KB', '')) / 1024 from #temp truncate table #temp fetch next from cur into @tname, @sql; end close cur; deallocate cur; select * from #rs order by convert(bigint, replace([reserved(MB)], 'KB', '')) desc drop table #temp drop table #rs