Coletando tamanho de tabelas de um database – SQL Server

Pessoal, há algum tempo recebi um pedido de ajuda para realizarem uma coleta de informações do tamanho de tableas de um database.
Como sabem no SQL conseguimos executar um SP_DATABASES e conseguimos informações do tamanho de um database mas esse tipo de informação detalhada referente a tabelas não temos em uma proc de sistema.

Sabendo disso, encontramos uma procedure que faz esse trabalho, e ao executa-la saberemos o tamanho de cada tabela. Segue a proc:

create proc dba_sp_espacotabela
as

declare @vname sysname

declare @tmpTamTabela table (
name sysname null
, rows int null
, reserved varchar(25) null
, data varchar(25) null
, index_size varchar(25) null
, unused varchar(25) null
)

declare cp1 cursorlocalfast_forwardread_onlyfor
select name
from sysobjects
where type = ‘U’
order by name

open cp1

while 1 = 1

begin
fetchnextfrom cp1 into @vname
if @@fetch_status <> 0 
break

insertinto @tmpTamTabela (name, rows, reserved
, data, index_size, unused )
exec sp_spaceused @vname

end

close cp1
deallocate cp1

select name as ‘Nome’
rows as ‘Linhas’
convert (int,replace (reserved,‘ KB’,) ) as ‘Tamanho total’
convert (int,replace (data,‘ KB’,) ) as ‘Dados’
convert (int,replace (index_size,‘ KB’,) ) as ‘Index’
convert (int,replace (unused,‘ KB’,) ) as ‘Não utilizado’
from @tmpTamTabela
order by convert (intreplace (reserved,‘ KB’,) ) desc
go

See you amiguinhos.

Deixe um comentário