Partager via


sys.sp_persistent_version_cleanup (Transact-SQL)

S’applique à : SQL Server 2019 (15.x) Azure SQL Database Azure SQL Managed Instance

Démarre manuellement le processus de nettoyage du magasin de versions persistant (PVS), un élément clé de la récupération de base de données accélérée (ADR). Ce nettoyage restaure les données non validées dans le PVS à partir des transactions abandonnées.

Il n’est généralement pas nécessaire de démarrer le processus de nettoyage PVS manuellement à l’aide sys.sp_persistent_version_cleanupde . Toutefois, dans certains scénarios, dans une période connue de repos/récupération après une activité OLTP occupée, vous pouvez lancer manuellement le processus de nettoyage PVS.

Pour plus d’informations sur la récupération ADR sur Azure SQL, consultez Récupération de base de données accélérée dans Azure SQL.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ @dbname = ] N’dbname'

facultatif. Nom de la base de données à nettoyer. S’il n’est pas fourni, utilise le contexte de base de données actuel. @dbname est sysname, avec la valeur par défaut NULL.

[ @scanallpages = ] scanallpages

facultatif. @scanallpages est bit, avec la valeur par défaut 0. Lorsque cette option est définie 1, cette option force le nettoyage de toutes les pages de base de données, même si elle n’est pas versionnée.

[ @clean_option = ] clean_option

facultatif. Les options possibles déterminent si la page PVS hors ligne doit être récupérée ou non. @clean_option est int, avec la valeur par défaut 0. Cette référence n’est pas couramment nécessaire et la valeur 0 par défaut est recommandée.

Valeur Description
0 Valeur par défaut, aucune option spécifiée
1 magasin de versions hors ligne sans vérifier le contenu de la page PVS individuel
2 Magasin de versions hors ligne avec chaque page PVS visitée
3 magasin de versions dans la ligne uniquement
4 utilisation interne uniquement

Valeurs des codes de retour

0 (réussite) ou 1 (échec).

Jeu de résultats

Aucune.

autorisations

Nécessite l’autorisation ALTER DATABASE pour s’exécuter.

Notes

La sys.sp_persistent_version_cleanup procédure stockée est synchrone, ce qui signifie qu’elle ne se termine pas tant que toutes les informations de version ne sont pas nettoyées à partir du PVS actuel.

Dans SQL Server 2019 (15.x), le processus de nettoyage PVS s’exécute uniquement pour une base de données à la fois. Dans Azure SQL Database et Azure SQL Managed Instance, et à partir de SQL Server 2022 (16.x), le processus de nettoyage PVS peut s’exécuter en parallèle sur plusieurs bases de données de la même instance.

Si le processus de nettoyage PVS s’exécute déjà sur la base de données souhaitée, cette procédure stockée est bloquée et attend la fin avant de démarrer un autre processus de nettoyage PVS. Les transactions actives et longues dans n’importe quelle base de données où ADR est activé peuvent également bloquer le nettoyage des PVS. Vous pouvez surveiller la tâche de nettoyage de version en recherchant son processus avec l’exemple de requête suivant :

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

Limites

La mise en miroir de bases de données ne peut pas être définie pour une base de données où ADR est activé ou il existe toujours des versions dans le magasin de versions persistant (PVS). Si adr est désactivé, exécutez sys.sp_persistent_version_cleanup pour nettoyer les versions précédentes toujours dans le PVS.

Exemples

Pour activer manuellement le processus de nettoyage PVS entre les charges de travail ou pendant les fenêtres de maintenance, utilisez l’exemple de script suivant :

EXEC sys.sp_persistent_version_cleanup [database_name];

Par exemple :

EXEC sys.sp_persistent_version_cleanup [WideWorldImporters];

Ou, pour supposer le contexte de base de données actuel :

USE [WideWorldImporters];
GO
EXEC sys.sp_persistent_version_cleanup;