Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2019 (15.x) e versões posteriores
do Banco de Dados SQL do AzureBanco de Dados SQL
do Azure Banco de Dados SQL banco de dados SQL do Banco de Dados SQL do Azure
banco de dados SQL no Microsoft Fabric
Inicia manualmente o processo de limpeza do PVS (repositório de versão persistente), um elemento-chave da ADR (recuperação acelerada de banco de dados). Esse limpador também remove dados não confirmados em PVS de transações anuladas.
Normalmente, não é necessário iniciar o processo de limpeza do PVS manualmente usando sys.sp_persistent_version_cleanupo . No entanto, em alguns cenários, talvez você queira iniciar o processo de limpeza de PVS manualmente durante um período conhecido de repouso/recuperação após a atividade OLTP ocupada.
Para obter mais informações sobre a ADR, consulte de recuperação acelerada de banco de dados.
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_persistent_version_cleanup
[ [ @dbname = ] N'dbname' ]
[ , [ @scanallpages = ] scanallpages ]
[ , [ @clean_option = ] clean_option ]
[ ; ]
Argumentos
@dbname [ = ] N'dbname'
Opcional. O nome do banco de dados a ser limpo. Se não for fornecido, usa o contexto de banco de dados atual.
@dbname é sysname, com um padrão de NULL.
@scanallpages [ = ] scanallpages
Opcional.
@scanallpages é bit, com um padrão de 0. Quando definida como 1, essa opção força a limpeza de todas as páginas de banco de dados, mesmo que não sejam com versão.
@clean_option [ = ] clean_option
Opcional. As opções possíveis determinam se a página PVS fora da linha deve ou não ser recuperada.
@clean_option é int, com um padrão de 0. Essa referência geralmente não é necessária e o valor 0 padrão é recomendado.
| Valor | Descrição |
|---|---|
0 |
Padrão, nenhuma opção especificada |
1 |
armazenamento de versão fora da linha sem verificar o conteúdo da página PVS individual |
2 |
repositório de versão fora da linha com cada página PVS visitada |
3 |
somente repositório de versão em linha |
4 |
Apenas para uso interno |
Valores do código de retorno
0 (sucesso) ou 1 (falha).
Conjunto de resultados
Nenhum.
Permissões
Requer a permissão ALTER no banco de dados.
Comentários
O sys.sp_persistent_version_cleanup procedimento armazenado é síncrono, o que significa que ele não é concluído até que todas as informações de versão sejam limpas do PVS atual.
No SQL Server 2019 (15.x), o processo de limpeza do PVS é executado apenas para um banco de dados por vez. No Banco de Dados SQL do Azure e na Instância Gerenciada de SQL do Azure, e a partir do SQL Server 2022 (16.x), o processo de limpeza do PVS pode ser executado em paralelo em vários bancos de dados na mesma instância.
Se o processo de limpeza de PVS já estiver em execução no banco de dados desejado, esse procedimento armazenado será bloqueado antes de iniciar outro processo de limpeza de PVS. Transações ativas e de execução longa em qualquer banco de dados na mesma instância do mecanismo de banco de dados que têm a ADR habilitada também podem bloquear a limpeza de PVS.
Você pode monitorar a tarefa do limpador de versão procurando seu processo com a seguinte consulta de exemplo:
SELECT *
FROM sys.dm_exec_requests
WHERE command LIKE '%PERSISTED_VERSION_CLEANER%';
Uma transação ativa pode impedir que o processo de limpeza de PVS seja iniciado. Se isso ocorrer, a sessão que executa o procedimento armazenado sys.sp_persistent_version_cleanup aguardará com o tipo de espera PVS_CLEANUP_LOCK. Você pode aguardar a conclusão da transação ou pode considerar o encerramento da sessão do bloqueador com uma transação ativa, se possível.
Se o ADR estiver desabilitado, execute sys.sp_persistent_version_cleanup para limpar as versões anteriores ainda no PVS.
Exemplos
Para ativar o processo de limpeza do PVS manualmente entre cargas de trabalho ou durante as janelas de manutenção, use o seguinte script de exemplo:
EXECUTE sys.sp_persistent_version_cleanup [database_name];
Por exemplo:
EXECUTE sys.sp_persistent_version_cleanup [WideWorldImporters];
Ou, para assumir o contexto atual do banco de dados:
USE [WideWorldImporters];
GO
EXECUTE sys.sp_persistent_version_cleanup;