Caros colegas, hoje recebi um comentario que acabou se tornando uma sugestao bem interessante, visto que recebo muitas visitas sobre como obter o tamanho das tabelas de um banco. Bom, a solucao que vou propor aqui vai mais a fundo, de forma a proporcionar uma ferramenta que facilite a gestao do tamanho de tabelas, quando isto e necessario. E e claro, eu preciso abrir 2013 com um post bacana, entao ai vai! E claro, como profissional da area, nao posso negligenciar uma verdade: se voce esta tendo que monitorar tamanhos de tabelas no banco de dados, existem problemas bem mais graves por tras de tudo isso. Ficar resolvendo somente o resultado de um problema nao resolve o problema em si, tem que atacar a causa, sempre. Nem preciso entrar em detalhes, certo? Mas se voce nao consegue resolver a fonte do problema (ex.: sistema de terceiros), essa dica vai facilitar sua vida. Hoje vou postar duas alternativas bem simples para melhorar a utilizacao do caculo, uma derivada da outra. A primeira procedure, que eu acho a mais interessante, realizara o envio automatico ao seu e-mail com um relatorio em HTML com as maiores tabelas, de todos os bancos de dados, sendo acionada por uma JOB, por exemplo. Eu ja fiz uma formatacao HTML que permita visualizar em dispositivos moveis (claro, qualquer aparelho que reproduza ao menos HTML, por favor). A segunda e o mesmo calculo, porem uma procedure simplificada, para ser executada manualmente e que retorna uma tabela com todos os registros por linha, para visualizar no resultado da query, ou copiar e colar para uma planilha, por exemplo. * Importante - ambas as procedures podem ser salvas e executas em qualquer banco de dados, isso e indiferente. - Para a utilizacao do primeiro modelo, sera necessario conhecimento em JOBS (criar job) e DATABASE MAIL (servico ativo e conta SMTP devidamente configurada). Entao vamos comecar pelo procedimento que envia o relatorio por email. Observe os comentarios no codigo para melhores orientacoes sobre como personalizar a execucao de acordo com suas necessidades:-- exec sp_espacotabelabanco_emailcreate proc sp_espacotabelabanco_emailas /* Fabiano Cores 02.01.2013 http://sqlburger.blogspot.com Segunda versao do calculo do tamanho das tabelas, que trata todos os bancos da instancia onde for executada. Versao 1.: Envio do relatorio para um email pre-determinado */ set nocount on declare @vname varchar(100) declare @vbase varchar(100) declare @sql varchar(max) declare @email varchar(max) declare @assunto varchar(200) declare @vtexto varchar(max) create table #tmpTamTabela ( db varchar(100) null , name varchar(100) null , rows int null , reserved varchar(25) null , data varchar(25) null , index_size varchar(25) null , unused varchar(25) null ) create table #tmpTabelas ( tabela varchar(100) null ) create table #retorno ( texto varchar(max) not null , ordem int identity ) insert into #retorno (texto) select '<table border=1 cellpadding=2 cellspacing=0 width=100%>' insert into #retorno (texto) select '<tr bgcolor=#000000>' + ' <td align=left Valign=top><font face=tahoma size=2 color=#FFFFFF><b>Tabela</b></font></td>' + ' <td align=right Valign=top><font face=tahoma size=2 color=#FFFFFF><b>Linhas</b></font></td>' + ' <td align=right Valign=top><font face=tahoma size=2 color=#FFFFFF><b>Tamanho</b></font></td>' + ' <td align=right Valign=top><font face=tahoma size=2 color=#FFFFFF><b>Dados</b></font></td>' + ' <td align=right Valign=top><font face=tahoma size=2 color=#FFFFFF><b>Index</b></font></td>' + ' <td