sys.sp_persistent_version_cleanup (Transact-SQL)
Aplica-se a: SQL Server 2019 (15.x) Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
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 reverte dados não confirmados no PVS de transações anuladas.
Normalmente, não é necessário iniciar o processo de limpeza do PVS manualmente usando sys.sp_persistent_version_cleanup
o . No entanto, em alguns cenários, em um período conhecido de repouso/recuperação após atividade OLTP ocupada, talvez você queira iniciar o processo de limpeza do PVS manualmente.
Para obter mais informações sobre o ADR no Azure SQL, consulte Recuperação Acelerada de Banco de Dados no Azure SQL.
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 do banco de dados, mesmo que não tenham controle de 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 DATABASE para ser executada.
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 do PVS já estiver em execução no banco de dados desejado, esse procedimento armazenado será bloqueado e aguardará a conclusão antes de iniciar outro processo de limpeza do PVS. Transações ativas e de longa execução em qualquer banco de dados em que a ADR esteja habilitada também podem bloquear a limpeza do 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%';
Limitações
O espelhamento de banco de dados não pode ser definido para um banco de dados em que a ADR está habilitada ou ainda há versões no PVS (repositório de versão persistente). 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:
EXEC sys.sp_persistent_version_cleanup [database_name];
Por exemplo:
EXEC sys.sp_persistent_version_cleanup [WideWorldImporters];
Ou, para assumir o contexto atual do banco de dados:
USE [WideWorldImporters];
GO
EXEC sys.sp_persistent_version_cleanup;