Partilhar via


sp_clean_db_free_space (Transact-SQL)

Aplica-se: SQL Server

Remove informações residuais deixadas nas páginas do banco de dados devido a rotinas de modificação de dados no SQL Server. sp_clean_db_free_space limpa todas as páginas em todos os arquivos do banco de dados.

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_clean_db_free_space
    [ @dbname = ] N'dbname'
    [ , [ @cleaning_delay = ] cleaning_delay ]
[ ; ]

Argumentos

@dbname [ = ] N'dbname'

O nome do banco de dados a ser limpo. @dbname é sysname, sem padrão.

@cleaning_delay [ = ] cleaning_delay

Especifica um intervalo de atraso entre a limpeza das páginas. @cleaning_delay é int, com um padrão de 0. Esse atraso ajuda a reduzir o efeito no sistema de E/S.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

As operações de exclusão de uma tabela ou as operações de atualização que fazem com que uma linha seja movida podem liberar espaço imediatamente em uma página removendo as referências para a linha. No entanto, em certas circunstâncias, a linha pode permanecer fisicamente na página de dados como um registro fantasma. Um processo em segundo plano remove periodicamente os registros fantasmas. Esses dados residuais não são retornados pelo Mecanismo de Banco de Dados em resposta a consultas. No entanto, em ambientes em que a segurança física dos dados ou arquivos de backup está em risco, você pode usar sp_clean_db_free_space para limpar esses registros fantasmas. Para executar essa operação por arquivo de banco de dados, use sp_clean_db_file_free_space.

O tempo necessário para a execução sp_clean_db_free_space depende do tamanho do arquivo, do espaço livre disponível e da capacidade do disco. Como a execução sp_clean_db_free_space pode afetar significativamente a atividade de E/S, recomendamos que você execute esse procedimento fora do horário normal de operação.

Antes de executar sp_clean_db_free_spaceo , recomendamos que você crie um backup completo do banco de dados.

O procedimento armazenado sp_clean_db_file_free_space relacionado pode limpar um único arquivo.

Permissões

Requer associação na db_owner função de banco de dados.

Exemplos

O exemplo a seguir limpa todas as informações residuais do banco de dados AdventureWorks2022.

USE master;
GO

EXEC sp_clean_db_free_space @dbname = N'AdventureWorks2022';