Hoje vamos implementar um script que retornará o tamanho em bytes de todas as tabelas do banco de dados onde está sendo executado, informando também o número de registros, bytes alocados e tamanho dos índices da tabela.
Utilizaremos para este exemplo, a procedure sp_spaceused que retorna todas as informações desejadas.
Como de praxe, implementaremos uma tabela temporária que recebrá os valores resultantes da execução da procedure que está encapsulada em um loop baseado no cursor com a lista de tabelas do banco de dados. Caso tenha dúvidas de como implementar cursores, pesquisa no blog os artigos anteriores sobre o assunto.
create table #temp(
nome varchar(250),
nroregistros varchar(10),
tamanhoreservado varchar(50),
tamanhousado varchar(50),
tamanhoindice varchar(50),
naousado varchar(50)
)
DECLARE @NAME VARCHAR(250)
DECLARE db_cursor CURSOR FOR
SELECT NAME FROM SYSOBJECTS
WHERE TYPE='U'
ORDER BY 1
OPEN db_cursor
FETCH NEXT FROM db_cursor
INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
insert into #temp
exec sp_spaceused @name
FETCH NEXT FROM db_cursor
INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
select
nome as [Nome da Tabela],
nroregistros [Número de registros],
tamanhoreservado [Tamanho Reservado],
tamanhousado [Tamanho Usado],
tamanhoindice [Tamanho do Índice],
naousado [Bytes não usados]
from #temp
order by cast(isnull(nroregistros,0) as int) desc
DROP TABLE #temp
Até a próxima.
sábado, 30 de maio de 2009
Script para determinar quantidade de bytes utilizados por uma tabela
Assinar:
Postar comentários (Atom)
Parabens
ResponderExcluir