sp_spaceused (Transact-SQL)
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.
Sintaxe
sp_spaceused [[ @objname = ] 'objname' ]
[,[ @updateusage = ] 'updateusage' ]
Argumentos
[ @objname=] 'objname'
É o nome qualificado ou não qualificado da tabela, da exibição indexada ou da fila para a qual as informações de uso do espaço são solicitadas. As aspas são obrigatórias apenas se um nome de objeto qualificado for especificado. Se um nome de objeto totalmente qualificado (incluindo um nome de banco de dados) for fornecido, o nome de banco de dados deve ser o nome do banco de dados atual.Se objname não for especificado, os resultados serão retornados para o banco de dados inteiro.
objname é nvarchar(776), com um padrão de NULL.
[ @updateusage=] 'updateusage'
Indica que DBCC UPDATEUSAGE deve ser executado para atualizar as informações de uso do espaço. Quando objname não é especificado, a instrução é executada no banco de dados inteiro; caso contrário, a instrução é executada em objname. Os valores podem ser true ou false. updateusage é varchar(5), com um padrão de false.
Valores de código de retorno
0 (êxito) ou 1 (falha)
Conjuntos de resultados
Se objname for omitido, os conjuntos de resultados a seguir serão retornados para fornecer informações de tamanho do banco de dados atual.
Nome da coluna |
Tipo de dados |
Descrição |
---|---|---|
database_name |
nvarchar(128) |
Nome do banco de dados atual. |
database_size |
varchar(18) |
Tamanho do banco de dados atual em megabytes. database_size inclui dados e arquivos de log. |
unallocated space |
varchar(18) |
Espaço no banco de dados que não foi reservado para objetos de banco de dados. |
Nome da coluna |
Tipo de dados |
Descrição |
---|---|---|
reserved |
varchar(18) |
Total de espaço alocado por objetos no banco de dados. |
data |
varchar(18) |
Total de espaço usado por dados. |
index_size |
varchar(18) |
Total de espaço usado por índices. |
unused |
varchar(18) |
Total de espaço reservado para objetos no banco de dados, mas ainda não usado. |
Se objname for especificado, o conjunto de resultados a seguir será retornado para o objeto especificado.
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. |
Comentários
database_size sempre será maior do que a soma de reserved + unallocated space porque inclui o tamanho dos arquivos de log, mas reserved e unallocated_space consideram apenas páginas de dados.
As páginas usadas por índices XML e índices de texto completo são incluídas em index_size para os dois conjuntos de resultados. Quando objname for especificado, as páginas para os índices XML e os índices de texto completo para o objeto também serão contadas no resultado total de reserved e index_size.
Se o uso do espaço for calculado para um banco de dados ou objeto que tem um índice espacial, as colunas do tamanho do espaço, como database_size, reserved e index_size, incluirão o tamanho do índice espacial.
Quando updateusage for especificado, o Mecanismo de banco de dados do SQL Server examinará as páginas de dados do banco de dados e fará as correções necessárias nas exibições do catálogo sys.allocation_units e sys.partitions com relação ao espaço de armazenamento usado por cada tabela. Há alguns casos, no entanto, em que as informações de espaço para a tabela podem não ser atuais após um índice ser descartado. updateusage pode demorar algum tempo para ser executado em tabelas ou bancos de dados grandes. Use updateusage apenas quando você suspeitar que valores incorretos estão sendo retornados ou quando o processo não tiver nenhum efeito adverso em outros usuários ou processos no banco de dados. Se preferir, DBCC UPDATEUSAGE pode ser executado separadamente.
Observação |
---|
Quando você descarta ou recria índices grandes, ou descarta ou trunca tabelas grandes, o Mecanismo de Banco de Dados adia as desalocações de página atuais e seus bloqueios associados, até depois de a transação ser confirmada. Operações de cancelamento adiadas não liberam espaço alocado imediatamente. Desse modo, os valores retornados por sp_spaceused, imediatamente depois de descartar ou truncar um objeto grande podem não refletir o espaço de disco atual disponível. Para obter mais informações sobre alocações adiadas, consulte Descartando e recriando objetos grandes. |
Permissões
A permissão para executar sp_spaceused é concedida à função public. Somente os membros da função de banco de dados fixa db_owner podem especificar o parâmetro @updateusage.
Exemplos
A. Exibindo informações de espaço em disco sobre uma tabela
O exemplo a seguir relata informações de espaço em disco para a tabela Vendor e seus índices.
USE AdventureWorks2008R2;
GO
EXEC sp_spaceused N'Purchasing.Vendor';
GO
B. Exibindo informações de espaço atualizadas sobre um banco de dados
O exemplo a seguir resume o espaço usado no banco de dados atual e usa o parâmetro @updateusage opcional para assegurar que os valores corretos sejam retornados.
USE AdventureWorks2008R2;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO
Consulte também