Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:Banco de Dados SQL do
Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Banco de Dados SQL no Microsoft Fabric
O sp_spaceused procedimento armazenado do sistema exibe:
o número de linhas, espaço em disco reservado e espaço em disco usado por uma tabela, exibição indexada ou fila do Service Broker no banco de dados atual
o espaço em disco reservado e usado por todo o banco de dados
Transact-SQL convenções de sintaxe
Sintaxe
sp_spaceused
[ [ @objname = ] N'objname' ]
[ , [ @updateusage = ] 'updateusage' ]
[ , [ @mode = ] 'mode' ]
[ , [ @oneresultset = ] oneresultset ]
[ , [ @include_total_xtp_storage = ] include_total_xtp_storage ]
[ ; ]
Observação
Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.
Argumentos
Para o Azure Synapse Analytics and Analytics Platform System (PDW), sp_spaceused deve especificar parâmetros nomeados (por exemplo sp_spaceused (@objname= N'Table1');), em vez de depender da posição ordinal dos parâmetros.
@objname [ = ] N'objname'
O nome qualificado ou não qualificado da tabela, exibição indexada ou fila para a qual as informações de uso de espaço são solicitadas.
@objname é nvarchar(776), com um padrão de NULL. As aspas são necessárias somente 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 do banco de dados deverá ser o nome do banco de dados atual.
Se @objname não for especificado, os resultados serão retornados para todo o banco de dados.
Observação
O Azure Synapse Analytics e o Analytics Platform System (PDW) suportam apenas objetos de banco de dados e tabela.
@updateusage [ = ] 'updateusage'
Indica DBCC UPDATEUSAGE que deve ser executado para atualizar as informações de uso de espaço.
@updateusage é varchar(5), com um padrão de false. Quando @objname não é especificado, a instrução é executada em todo o banco de dados. Caso contrário, a instrução será executada em @objname. Os valores podem ser true ou false.
@mode [ = ] 'modo'
Indica o escopo dos resultados. Para uma tabela ou banco de dados estendido, o parâmetro @mode permite incluir ou excluir a parte remota do objeto. Para obter mais informações, consulte Stretch Database.
Importante
O Stretch Database foi preterido no SQL Server 2022 (16.x) e no Banco de Dados SQL do Azure. Esse recurso será removido em uma versão futura do Mecanismo de Banco de Dados. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.
@mode é varchar(11) e pode ser um desses valores.
| Valor | Descrição |
|---|---|
ALL (padrão) |
Retorna as estatísticas de armazenamento do objeto ou banco de dados, incluindo a parte local e a parte remota. |
LOCAL_ONLY |
Retorna as estatísticas de armazenamento somente da parte local do objeto ou banco de dados. Se o objeto ou banco de dados não estiver habilitado para Stretch, retornará as mesmas estatísticas de quando @mode é ALL. |
REMOTE_ONLY |
Retorna as estatísticas de armazenamento apenas da parte remota do objeto ou banco de dados. Esta opção gera um erro quando uma das seguintes condições for verdadeira: A tabela não está habilitada para Stretch. A tabela está habilitada para Stretch, mas você nunca habilitou a migração de dados. Nesse caso, a tabela remota ainda não tem um esquema. O usuário soltou manualmente a tabela remota. O provisionamento do arquivo de dados remoto retornou um status de Sucesso, mas na verdade falhou. |
@oneresultset [ = ] OneResultSet
Indica se um único conjunto de resultados deve ser retornado. @oneresultset é bit e pode ser um destes valores:
| Valor | Descrição |
|---|---|
0 (padrão) |
Quando @objname é nulo ou não é especificado, dois conjuntos de resultados são retornados. |
1 |
Quando @objname é NULL ou não especificado, um único conjunto de resultados é retornado. |
@include_total_xtp_storage [ = ] include_total_xtp_storage
Aplica-se a: SQL Server 2017 (14.x) e versões posteriores e Banco de Dados SQL
Quando @oneresultset é definido como 1, esse parâmetro determina se o único conjunto de resultados inclui colunas para MEMORY_OPTIMIZED_DATA armazenamento.
@include_total_xtp_storage é bit, com um padrão de 0. Se 1, as colunas XTP forem incluídas no conjunto de resultados.
Valores de código de retorno
0 (sucesso) ou 1 (fracasso).
Conjunto de resultados
Se @objname for omitido e o valor de @oneresultset for 0, os seguintes conjuntos de resultados serão retornados para fornecer informações atuais sobre o tamanho do banco de dados.
| 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 arquivos de dados e de log. |
unallocated space |
Varchar(18) | Espaço no banco de dados que não está reservado para objetos de banco de dados. |
| Nome da coluna | Tipo de dados | Descrição |
|---|---|---|
reserved |
Varchar(18) | Quantidade total de espaço alocado por objetos no banco de dados. |
data |
Varchar(18) | Quantidade total de espaço utilizado pelos dados. |
index_size |
Varchar(18) | Quantidade total de espaço utilizado pelos índices. |
unused |
Varchar(18) | Quantidade total de espaço reservado para objetos no banco de dados, mas ainda não usado. |
Se @objname for omitido e o valor de @oneresultset for 1, o seguinte conjunto de resultados único será retornado para fornecer informações atuais sobre o tamanho do banco de dados.
| 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 arquivos de dados e de log. |
unallocated space |
Varchar(18) | Espaço no banco de dados que não está reservado para objetos de banco de dados. |
reserved |
Varchar(18) | Quantidade total de espaço alocado por objetos no banco de dados. |
data |
Varchar(18) | Quantidade total de espaço utilizado pelos dados. |
index_size |
Varchar(18) | Quantidade total de espaço utilizado pelos índices. |
unused |
Varchar(18) | Quantidade total de espaço reservado para objetos no banco de dados, mas ainda não usado. |
Se @objname for especificado, o seguinte conjunto de resultados 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 de espaço. O nome do esquema do objeto não é retornado. Se o nome do esquema for necessá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 equivalente. |
rows |
char(20) | Número de linhas existentes na tabela. Se o objeto especificado for uma fila do Service Broker, essa coluna indicará o número de mensagens na fila. |
reserved |
Varchar(18) | Quantidade total de espaço reservado para @objname. |
data |
Varchar(18) | Quantidade total de espaço utilizado pelos dados em @objname. |
index_size |
Varchar(18) | Quantidade total de espaço utilizado pelos índices em @objname. |
unused |
Varchar(18) | Quantidade total de espaço reservado para @objname mas ainda não utilizado. |
Este modo é o padrão, quando nenhum parâmetro é especificado. Os seguintes conjuntos de resultados são retornados detalhando informações de tamanho do banco de dados em disco.
| 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 arquivos de dados e de log. Se o banco de dados tiver um MEMORY_OPTIMIZED_DATA grupo de arquivos, esse valor incluirá o tamanho total no disco de todos os arquivos de ponto de verificação no grupo de arquivos. |
unallocated space |
Varchar(18) | Espaço no banco de dados que não está reservado para objetos de banco de dados. Se o banco de dados tiver um MEMORY_OPTIMIZED_DATA grupo de arquivos, esse valor incluirá o tamanho total no disco dos arquivos de ponto de verificação com o estado PRECREATED no grupo de arquivos. |
Espaço utilizado pelas tabelas na base de dados. Esse conjunto de resultados não reflete tabelas com otimização de memória, pois não há contabilização por tabela do uso do disco:
| Nome da coluna | Tipo de dados | Descrição |
|---|---|---|
reserved |
Varchar(18) | Quantidade total de espaço alocado por objetos no banco de dados. |
data |
Varchar(18) | Quantidade total de espaço utilizado pelos dados. |
index_size |
Varchar(18) | Quantidade total de espaço utilizado pelos índices. |
unused |
Varchar(18) | Quantidade total de espaço reservado para objetos no banco de dados, mas ainda não usado. |
O seguinte conjunto de resultados será retornado somente se o banco de dados tiver um MEMORY_OPTIMIZED_DATA grupo de arquivos com pelo menos um contêiner:
| Nome da coluna | Tipo de dados | Descrição |
|---|---|---|
xtp_precreated |
Varchar(18) | Tamanho total dos arquivos de ponto de verificação com estado PRECREATED, em KB. Conta para o espaço não alocado no banco de dados como um todo. Por exemplo, se houver 600.000 KB de arquivos de ponto de verificação pré-criados, esta coluna conterá 600000 KB. |
xtp_used |
Varchar(18) | Tamanho total dos arquivos de ponto de verificação com estados UNDER CONSTRUCTION, ACTIVEe MERGE TARGET, em KB. Esse valor é o espaço em disco usado ativamente para dados em tabelas com otimização de memória. |
xtp_pending_truncation |
Varchar(18) | Tamanho total dos arquivos de ponto de verificação com estado WAITING_FOR_LOG_TRUNCATION, em KB. Esse valor é o espaço em disco usado para arquivos de ponto de verificação que estão aguardando limpeza, uma vez que o truncamento de log acontece. |
Se @objname for omitido, o valor de @oneresultset for 1, e @include_total_xtp_storage for 1, o seguinte conjunto de resultados único será retornado para fornecer informações atuais sobre o tamanho do banco de dados. Se @include_total_xtp_storage for 0 (o padrão), as três últimas colunas serão omitidas.
| 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 arquivos de dados e de log. Se o banco de dados tiver um MEMORY_OPTIMIZED_DATA grupo de arquivos, esse valor incluirá o tamanho total no disco de todos os arquivos de ponto de verificação no grupo de arquivos. |
unallocated space |
Varchar(18) | Espaço no banco de dados que não está reservado para objetos de banco de dados. Se o banco de dados tiver um MEMORY_OPTIMIZED_DATA grupo de arquivos, esse valor incluirá o tamanho total no disco dos arquivos de ponto de verificação com o estado PRECREATED no grupo de arquivos. |
reserved |
Varchar(18) | Quantidade total de espaço alocado por objetos no banco de dados. |
data |
Varchar(18) | Quantidade total de espaço utilizado pelos dados. |
index_size |
Varchar(18) | Quantidade total de espaço utilizado pelos índices. |
unused |
Varchar(18) | Quantidade total de espaço reservado para objetos no banco de dados, mas ainda não usado. |
xtp_precreated
1 |
Varchar(18) | Tamanho total dos arquivos de ponto de verificação com estado PRECREATED, em KB. Esse valor conta para o espaço não alocado no banco de dados como um todo. Retorna NULL se o banco de dados não tiver um MEMORY_OPTIMIZED_DATA grupo de arquivos com pelo menos um contêiner. |
xtp_used
1 |
Varchar(18) | Tamanho total dos arquivos de ponto de verificação com estados UNDER CONSTRUCTION, ACTIVEe MERGE TARGET, em KB. Esse valor é o espaço em disco usado ativamente para dados em tabelas com otimização de memória. Retorna NULL se o banco de dados não tiver um MEMORY_OPTIMIZED_DATA grupo de arquivos com pelo menos um contêiner. |
xtp_pending_truncation
1 |
Varchar(18) | Tamanho total dos arquivos de ponto de verificação com estado WAITING_FOR_LOG_TRUNCATION, em KB. Esse valor é o espaço em disco usado para arquivos de ponto de verificação que estão aguardando limpeza, uma vez que o truncamento de log acontece. Retorna NULL se o banco de dados não tiver um MEMORY_OPTIMIZED_DATA grupo de arquivos com pelo menos um contêiner. |
1 Incluído apenas se @include_total_xtp_storage estiver definido como 1.
Observações
O database_size valor geralmente é maior do que a soma de porque inclui o tamanho dos arquivos de log, mas reserved e + considera apenas páginas de unallocated spacereservedunallocated_space dados. Em alguns casos com o Azure Synapse Analytics, essa declaração pode não ser verdadeira.
As páginas usadas por índices XML e índices de texto completo são incluídas em index_size ambos os conjuntos de resultados. Quando @objname é especificado, as páginas para os índices XML e índices de texto completo para o objeto também são contadas no total reserved e index_size nos resultados.
Se o uso de espaço for calculado para um banco de dados ou um objeto que seja um índice espacial, as colunas de tamanho de espaço, como database_size, reservede index_size, incluirão o tamanho do índice espacial.
Quando @updateusage é especificado, o Mecanismo de Banco de Dados do SQL Server verifica as páginas de dados no banco de dados e faz as correções necessárias nas sys.allocation_units exibições e sys.partitions no catálogo em relação ao espaço de armazenamento usado por cada tabela. Há algumas situações, por exemplo, depois que um índice é descartado, quando as informações de espaço para a tabela podem não ser atuais.
@updateusage pode levar algum tempo para ser executada em grandes tabelas ou bancos de dados. Use @updateusage somente quando suspeitar que valores incorretos estão sendo retornados e quando o processo não tiver um efeito adverso sobre outros usuários ou processos no banco de dados. Se preferir, DBCC UPDATEUSAGE pode ser executado separadamente.
Observação
Quando você solta ou reconstrói índices grandes, ou solta ou trunca tabelas grandes, o Mecanismo de Banco de Dados adia os locais de negociação de página reais e seus bloqueios associados até que a transação seja confirmada. As operações de queda diferida não liberam espaço alocado imediatamente. Portanto, os valores retornados imediatamente sp_spaceused após soltar ou truncar um objeto grande podem não refletir o espaço em disco real disponível.
Permissões
A permissão para executar sp_spaceused é concedida à função pública . Somente membros da função de banco de dados fixa db_owner podem especificar o parâmetro @updateusage.
Exemplos
Um. Exibir informações de espaço em disco sobre uma tabela
O exemplo a seguir relata informações de espaço em disco para a Vendor tabela e seus índices.
USE AdventureWorks2022;
GO
EXECUTE sp_spaceused N'Purchasing.Vendor';
GO
B. Exibir 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 opcional @updateusage para garantir que os valores atuais sejam retornados.
USE AdventureWorks2022;
GO
EXECUTE sp_spaceused @updateusage = N'TRUE';
GO
C. Exibir informações de uso de espaço sobre a tabela remota associada a uma tabela habilitada para Stretch
O exemplo a seguir resume o espaço usado pela tabela remota associada a uma tabela habilitada para Stretch usando o argumento @mode para especificar o destino remoto. Para obter mais informações, consulte Stretch Database.
USE StretchedAdventureWorks2022;
GO
EXECUTE sp_spaceused N'Purchasing.Vendor', @mode = 'REMOTE_ONLY';
D. Exibir informações de uso de espaço para um banco de dados em um único conjunto de resultados
O exemplo a seguir resume o uso de espaço para o banco de dados atual em um único conjunto de resultados.
USE AdventureWorks2022;
GO
EXECUTE sp_spaceused @oneresultset = 1;
E. Exibir informações de uso de espaço para um banco de dados com pelo menos um grupo de arquivos MEMORY_OPTIMIZED em um único conjunto de resultados
O exemplo a seguir resume o uso de espaço para o banco de dados atual com pelo menos um MEMORY_OPTIMIZED grupo de arquivos em um único conjunto de resultados.
USE WideWorldImporters;
GO
EXECUTE sp_spaceused
@updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '1',
@include_total_xtp_storage = '1';
GO
F. Exibir informações de uso de espaço para um objeto de tabela MEMORY_OPTIMIZED em um banco de dados
O exemplo a seguir resume o uso de espaço para um MEMORY_OPTIMIZED objeto de tabela no banco de dados atual com pelo menos um MEMORY_OPTIMIZED grupo de arquivos.
USE WideWorldImporters;
GO
EXECUTE sp_spaceused
@objname = N'VehicleTemperatures',
@updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '0',
@include_total_xtp_storage = '1';
GO
Conteúdo relacionado
- CRIAR ÍNDICE (Transact-SQL)
- CRIAR TABELA (Transact-SQL)
- DBCC UPDATEUSAGE (Transact-SQL)
- Agente de Serviços
- sys.allocation_units (Transact-SQL)
- sys.indexes (Transact-SQL)
- sys.index_columns (Transact-SQL)
- sys.objects (Transact-SQL)
- sys.partitions (Transact-SQL)
- Procedimentos armazenados do sistema (Transact-SQL)