Condividi tramite


sys.sp_persistent_version_cleanup (Transact-SQL)

Si applica a: SQL Server 2019 (15.x) Database SQL di Azure Istanza gestita di SQL di Azure

Avvia manualmente il processo di pulizia dell'archivio versioni permanente (PVS), un elemento chiave del ripristino accelerato del database.Manually starts persistent version store (PVS) cleanup process, a key element of accelerated database recovery (ADR). Questo servizio di pulizia esegue il rollback dei dati non inviati nei pvS dalle transazioni interrotte.

In genere non è necessario avviare manualmente il processo di pulizia PVS usando sys.sp_persistent_version_cleanup. In alcuni scenari, tuttavia, in un periodo noto di riposo/ripristino dopo l'attività OLTP occupata, potrebbe essere necessario avviare manualmente il processo di pulizia PVS.

Per altre informazioni sul ripristino accelerato del database in Azure SQL, vedere Ripristino accelerato del database in Azure SQL.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

sp_persistent_version_cleanup
    [ [ @dbname = ] N'dbname' ]
    [ , [ @scanallpages = ] scanallpages ]
    [ , [ @clean_option = ] clean_option ]
[ ; ]

Argomenti

[ @dbname = ] N'dbname'

Facoltativo. Nome del database da pulire. Se non specificato, usa il contesto del database corrente. @dbname è sysname, con un valore predefinito .NULL

[ @scanallpages = ] scanallpages

Facoltativo. @scanallpages è bit, con un valore predefinito .0 Se impostata su 1, questa opzione forza la pulizia di tutte le pagine del database anche se non è stato eseguito il controllo delle versioni.

[ @clean_option = ] clean_option

Facoltativo. Le opzioni possibili determinano se recuperare o meno la pagina PVS fuori riga. @clean_option è int, con il valore predefinito 0. Questo riferimento non è comunemente necessario e il valore 0 predefinito è consigliato.

valore Descrizione
0 Impostazione predefinita, nessuna opzione specificata
1 archivio versioni fuori riga senza controllare il contenuto della singola pagina PVS
2 archivio versioni fuori riga con ogni pagina PVS visitata
3 Solo archivio versioni in riga
4 solo uso interno

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Set di risultati

Nessuno.

Autorizzazioni

È necessaria l'autorizzazione ALTER DATABASE da eseguire.

Osservazioni:

La sys.sp_persistent_version_cleanup stored procedure è sincrona, ovvero non viene completata fino a quando tutte le informazioni sulla versione non vengono pulite dal pvS corrente.

In SQL Server 2019 (15.x), il processo di pulizia PVS viene eseguito solo per un database alla volta. In database SQL di Azure e Istanza gestita di SQL di Azure e a partire da SQL Server 2022 (16.x), il processo di pulizia PVS può essere eseguito in parallelo su più database nella stessa istanza.

Se il processo di pulizia PVS è già in esecuzione nel database desiderato, questa stored procedure viene bloccata e attende il completamento prima di avviare un altro processo di pulizia PVS. Le transazioni attive e a esecuzione prolungata in qualsiasi database in cui è abilitato ADR possono anche bloccare la pulizia del pvS. È possibile monitorare l'attività di pulizia della versione cercando il relativo processo con la query di esempio seguente:

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

Limiti

Non è possibile impostare il mirroring del database per un database in cui è abilitato ADR o sono ancora presenti versioni nell'archivio versioni persistenti .PVS. Se ADR è disabilitato, eseguire sys.sp_persistent_version_cleanup per pulire le versioni precedenti ancora nel pvS.

Esempi

Per attivare manualmente il processo di pulizia PVS tra carichi di lavoro o durante le finestre di manutenzione, usare lo script di esempio seguente:

EXEC sys.sp_persistent_version_cleanup [database_name];

Ad esempio:

EXEC sys.sp_persistent_version_cleanup [WideWorldImporters];

In alternativa, per presupporre il contesto del database corrente:

USE [WideWorldImporters];
GO
EXEC sys.sp_persistent_version_cleanup;