sys.sp_persistent_version_cleanup (Transact-SQL)

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

Inicia manualmente o processo de limpeza do PVS (armazenamento de versão persistente), um elemento-chave da recuperação acelerada de 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 do PVS manualmente usando sys.sp_persistent_version_cleanupo . No entanto, em alguns cenários, em um período conhecido de descanso/recuperação após a atividade OLTP ocupada, convém 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, usará o contexto do 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 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 não é normalmente 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 armazenamento de versão fora da linha com cada página PVS visitada
3 somente armazenamento 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 executar.

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 só é executado para um banco de dados por vez. No Banco de Dados SQL do Azure e na Instância Gerenciada SQL do Azure, e começando com o 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 o ADR esteja 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%';

Limitações

O espelhamento de banco de dados não pode ser definido para um banco de dados em que o ADR está habilitado ou ainda há versões no PVS (armazenamento 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;