Olá pessoal…
Hoje vou mostrar como verificar todas as tabelas de um esquema no SQL Server, e todos os tamanhos em KB.
Para fazer uma busca pegando todas as tabelas, precisamos relacionar sys.tables com o sys.schemas.
Para pegar o tamanho, é necessário relacionar o sys.indexes com o sys.tables, o sys.partitions com o sys.indexes e por último o sys.allocation_units com o sys.partitions.
Ficando similar a:
FROM
sys.tables tabelas
INNER JOIN sys.schemas esquemas ON (
esquemas.schema_id = tabelas.schema_id
)
INNER JOIN sys.indexes indices ON (
tabelas.OBJECT_ID = indices.object_id
)
INNER JOIN sys.partitions particoes ON (
indices.object_id = particoes.OBJECT_ID
AND indices.index_id = particoes.index_id
)
INNER JOIN sys.allocation_units alocacao ON (
particoes.partition_id = alocacao.container_id
)
Depois basta filtrar os dados para trazer somente as tabelas e o agrupamento dos dados. Abaixo um print da consulta executada.
Abaixo o código completo:
SELECT
esquemas.Name AS Esquema_Nome,
tabelas.NAME AS Tabela_Nome,
particoes.rows AS Numero_Linhas,
SUM(alocacao.total_pages) * 8 AS Espaco_KB_Total,
SUM(alocacao.used_pages) * 8 AS Espaco_KB_Usado,
(SUM(alocacao.total_pages) - SUM(alocacao.used_pages)) * 8 AS Espaco_KB_Sem_Uso
FROM
sys.tables tabelas
INNER JOIN sys.schemas esquemas ON (
esquemas.schema_id = tabelas.schema_id
)
INNER JOIN sys.indexes indices ON (
tabelas.OBJECT_ID = indices.object_id
)
INNER JOIN sys.partitions particoes ON (
indices.object_id = particoes.OBJECT_ID
AND indices.index_id = particoes.index_id
)
INNER JOIN sys.allocation_units alocacao ON (
particoes.partition_id = alocacao.container_id
)
--Filtra somentes tabelas, filtra somente as criadas por usuário
WHERE
tabelas.NAME NOT LIKE 'dt%'
AND tabelas.is_ms_shipped = 0
AND indices.OBJECT_ID > 255
--Agrupando pela Tabela, Esquema e Número de linhas
GROUP BY
tabelas.Name, esquemas.Name, particoes.Rows
--Ordenando pelo esquema, seguido pelas tabelas
ORDER BY
Esquema_Nome, Tabela_Nome
Referências:
– stackoverflow.com/questions/7892334/get-size-of-all-tables-in-database
Bom pessoal, por hoje é só.
Abraços e até a próxima.


O Daniel San eh fera, e este foi mais um post show de bola. Vlw meu amigo.
Ahooo Patini san, obrigado jovem.
Um grande abraço.