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.