sys.sp_persistent_version_cleanup (Transact-SQL)
Si applica a:SQL Server 2019 (15.x) Database SQL di AzureIstanza 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 su ADR, vedere Ripristino accelerato del database.
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 impostato su 1
, questa opzione forza la pulizia di tutte le pagine del database anche se non ne viene 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
È richiesta l'autorizzazione ALTER
per il database.
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 prima di avviare un altro processo di pulizia PVS. Le transazioni attive e a esecuzione prolungata in qualsiasi database nella stessa istanza del motore di database con ADR abilitato possono anche bloccare la pulizia 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%';
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;