Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : SQL Server 2019 (15.x) et versions
ultérieures d’Azure SQL Database Azure SQL
Managed Instance
SQL database dans Microsoft Fabric
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). Le nettoyeur supprime les versions de lignes obsolètes du stockage PVS en ligne et hors ligne, et supprime également les modifications non validées 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, vous pouvez lancer manuellement le processus de nettoyage PVS pendant une période connue de repos/récupération après une activité OLTP occupée.
Pour plus d’informations sur ADR, consultez récupération de base de données accélérée.
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. Quand elle est définie sur 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. Option permettant de déterminer le type de nettoyage à effectuer.
@clean_option est int, avec la valeur par défaut 0. Ce paramètre n’est pas couramment nécessaire et la valeur 0 par défaut est recommandée.
| Valeur | Description |
|---|---|
0 |
Par défaut, effectuez tout le nettoyage. |
1 |
Nettoyez le stockage de version hors ligne sans examiner le contenu de la page PVS. Plus rapide, mais peut ignorer la désallocation des pages inutilisées dans PVS. Il s’agit du comportement par défaut lorsqu’il @clean_option est omis ou défini sur 0. |
2 |
Nettoyez le stockage de version hors ligne en vérifiant le contenu de chaque page PVS. Plus lent, mais désalloue toujours toutes les pages inutilisées. |
3 |
Nettoyez le stockage de version en ligne uniquement. |
4 |
Nettoyez les versions de ligne générées par des transactions abandonnées uniquement (également appelées restauration logique). |
Valeurs des codes de retour
0 (réussite) or 1 (échec).
Jeu de résultats
Aucune.
autorisations
Nécessite l’autorisation ALTER sur la base de données.
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 avant de démarrer un autre processus de nettoyage PVS. Les transactions actives et longues dans n’importe quelle base de données sur la même instance du moteur de base de données activée peuvent également bloquer le nettoyage 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%';
Une transaction active peut empêcher le processus de nettoyage PVS de démarrer. Si cela se produit, la session exécutant la procédure stockée sys.sp_persistent_version_cleanup attend avec le type d’attente PVS_CLEANUP_LOCK. Vous pouvez attendre la fin de la transaction, ou vous pouvez envisager de tuer la session de blocage avec une transaction active, si possible.
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 :
EXECUTE sys.sp_persistent_version_cleanup [database_name];
Par exemple :
EXECUTE sys.sp_persistent_version_cleanup [WideWorldImporters];
Ou, pour supposer le contexte de base de données actuel :
USE [WideWorldImporters];
GO
EXECUTE sys.sp_persistent_version_cleanup;