Partilhar via


sys.sp_persistent_version_cleanup (Transact-SQL)

Aplica-se a: SQL Server 2019 (15.x) Banco de Dados SQL do AzureInstância Gerenciada SQL do Azure

Inicia manualmente o processo de limpeza do armazenamento de versão persistente (PVS), um elemento-chave da recuperação acelerada do banco de dados (ADR). Esse limpador reverte dados não confirmados no PVS de transações abortadas.

Normalmente, não é necessário iniciar o processo de limpeza PVS manualmente usando sys.sp_persistent_version_cleanup. No entanto, em alguns cenários, em um período conhecido de repouso/recuperação após a atividade OLTP ocupada, convém iniciar o processo de limpeza PVS manualmente.

Para obter mais informações sobre ADR, consulte Accelerated database recovery.

Transact-SQL convenções de sintaxe

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 do banco de dados atual. @dbname é sysname, com um padrão de NULL.

[ @scanallpages = ] scanallpages

Opcional. @scanallpages é pouco, 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 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 padrão 0 é 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 armazenamento de versão off-row com cada página PVS visitada
3 apenas armazenamento de versão em linha
4 apenas para uso interno

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Conjunto de resultados

Nenhuma.

Permissões

Requer a permissão ALTER no banco de dados.

Comentários

O procedimento armazenado sys.sp_persistent_version_cleanup é 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 PVS só é executado para um banco de dados de cada vez. No Banco de Dados SQL do Azure e na Instância Gerenciada 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 antes de iniciar outro processo de limpeza do PVS. Transações ativas e de longa execução em qualquer banco de dados na mesma instância do mecanismo de banco de dados que tenham o ADR habilitado também podem bloquear a limpeza do PVS.

Você pode monitorar a tarefa de limpeza de versão procurando seu processo com a seguinte consulta de exemplo:

SELECT *
FROM sys.dm_exec_requests
WHERE command LIKE '%PERSISTED_VERSION_CLEANER%';

Se o ADR estiver desativado, execute sys.sp_persistent_version_cleanup para limpar versões anteriores ainda no PVS.

Exemplos

Para ativar o processo de limpeza 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;