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;