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 (int, replace (reserved,‘ KB’,”) ) desc
go
See you amiguinhos.