Olá pessoal.
Novamente com mais uma dica pra você que usa o SQL Server.
Aqui nesta postagem estou utilizando o SQL Server 2005 Express com o Management Studio.
Para esta postagem utilizaremos a procedure SP_SPACEUSED.
O que esta procedure faz?
Resposta: Exibe o número de linhas, o espaço em disco reservado e o espaço em disco usado por uma tabela, exibição indexada ou fila Service Broker no banco de dados atual ou exibe o espaço em disco reservado e usado pelo banco de dados inteiro.
Então ao executar a procedure passando como parâmetro o nome de uma tabela teremos os seguintes dados:
| Nome da coluna |
Tipo de dados |
Descrição |
| name |
nvarchar(128) |
Nome do objeto para o qual foram solicitadas informações de uso do espaço.O nome de esquema do objeto não é retornado. Se o nome de esquema for obrigatório, use as exibições de gerenciamento dinâmico sys.dm_db_partition_stats ou sys.dm_db_index_physical_stats para obter informações de tamanho equivalentes.
|
| rows |
char(11)
|
Número de linhas existentes na tabela. Se o objeto especificado for uma fila Service Broker, essa coluna indicará o número de mensagens na fila. |
| reserved |
varchar(18) |
Total de espaço reservado para objname. |
| data |
varchar(18) |
Total de espaço usado por dados em objname. |
| index_size |
varchar(18) |
Total de espaço usado por índices em objname. |
| unused |
varchar(18) |
Total de espaço reservado para objname, mas ainda não usado. |
Você pode encontrar mais detalhes a respeito da SP_SPACEUSED no site da MSDN -> http://msdn.microsoft.com/pt-br/library/ms188776.aspx
Ok. Mas como fazer isso para todas as tabelas da nossa base de dados?
Executar um a um? Não.
Um maneria de fazer isso é usando a dica da postagem anterior, ou seja, utilizando a procedure SP_MSFOREACHTABLE.
Veja a postagem anterior: #QuickTip 4 - [SQL Server] Como executar um select count em todas as tabelas de uma base de dados
Então podemos executar de duas maneiras (que fazem a mesma tarefa), percorrem todas as tabelas da base de dados e executam o comando passado como parâmetro.
Você pode verificar como, a seguir:
- /* SCRIPT 1*/
- EXEC SP_MSFOREACHTABLE 'SP_SPACEUSED ''?'''
-
- /* OR SCRIPT 2*/
- EXEC SP_MSFOREACHTABLE @COMMAND1="SP_SPACEUSED '?'"
/* SCRIPT 1*/
EXEC SP_MSFOREACHTABLE 'SP_SPACEUSED ''?'''
/* OR SCRIPT 2*/
EXEC SP_MSFOREACHTABLE @COMMAND1="SP_SPACEUSED '?'"
No meu caso tenho apenas 2 tabelas de exemplos então o resultado foi este:

Por hoje foi isso.
Até a próxima.
Não julgueis, e não sereis julgados; não condeneis, e não sereis condenados; soltai, e soltar-vos-ão. (Lucas 6:37)
Tags: sql, SQL Server 2005, sqlserver, SP_SPACEUSED, SP_MSFOREACHTABLE