select
a3.name as proprietario,
a2.name as tabela,
a1.rows as registros,
((a1.reserved + isnull(a4.reserved,0)) * 8)/1024/1024 as 'Espaço Total (GB)',
a1.data * 8 as 'Dados (kb)',
(case when (a1.used + isnull(a4.used,0)) > a1.data then (a1.used + isnull(a4.used,0)) - a1.data else 0 end) * 8 as 'Índices (kb)',
(case when (a1.reserved + isnull(a4.reserved,0)) > a1.used then (a1.reserved + isnull(a4.reserved,0)) - a1.used else 0 end) * 8 as 'Não Usado (kb)'
from (
select
ps.object_id,
sum (
case
when (ps.index_id < 2) then row_count
else 0
end
) as [rows],
sum (ps.reserved_page_count) as reserved,
sum (
case
when (ps.index_id < 2) then (ps.in_row_data_page_count + ps.lob_used_page_count + ps.row_overflow_used_page_count)
else (ps.lob_used_page_count + ps.row_overflow_used_page_count)
end
) as data,
sum (ps.used_page_count) as used
from sys.dm_db_partition_stats ps
where ps.object_id not in (select object_id from sys.tables where is_memory_optimized = 1)
group by ps.object_id) as a1
left outer join (
select
it.parent_id,
sum(ps.reserved_page_count) as reserved,
sum(ps.used_page_count) as used
from sys.dm_db_partition_stats ps
inner join sys.internal_tables it on (it.object_id = ps.object_id)
where it.internal_type in (202, 204)
group by it.parent_id) as a4 on (a4.parent_id = a1.object_id)
inner join sys.all_objects a2 on ( a1.object_id = a2.object_id)
inner join sys.schemas a3 on (a2.schema_id = a3.schema_id)
where a2.type <> 's' and a2.type <> 'it'
and a3.name like '%%' --esquema
and a2.name like '%%' --tabela
order by a3.name, a2.name