sys.sp_persistent_version_cleanup (Transact-SQL)
van toepassing op: SQL Server 2019 (15.x)
Azure SQL Database
Azure SQL Managed Instance
Hiermee start u handmatig het opschonen van permanente versieopslag (PVS), een belangrijk element van versneld databaseherstel (ADR). Deze schoner verwijdert ook niet-doorgevoerde gegevens in PVS uit afgebroken transacties.
Het is doorgaans niet nodig om het PVS-opschoonproces handmatig te starten met behulp van sys.sp_persistent_version_cleanup
. In sommige scenario's wilt u het PVS-opschoonproces echter handmatig starten tijdens een bekende periode van rust/herstel na bezet OLTP-activiteit.
Zie Versneld databaseherstelvoor meer informatie over ADR.
Transact-SQL syntaxisconventies
Syntaxis
sp_persistent_version_cleanup
[ [ @dbname = ] N'dbname' ]
[ , [ @scanallpages = ] scanallpages ]
[ , [ @clean_option = ] clean_option ]
[ ; ]
Argumenten
[ @dbname = ] N'dbname'
Facultatief. De naam van de database die moet worden opgeschoond. Als deze niet is opgegeven, gebruikt u de huidige databasecontext.
@dbname is sysname, met een standaardwaarde van NULL
.
[ @scanallpages = ] scanallpages
Facultatief.
@scanallpages is bit, met een standaardwaarde van 0
. Als deze optie is ingesteld op 1
, worden met deze optie alle databasepagina's opgeschoond, zelfs als deze niet zijn geversied.
[ @clean_option = ] clean_option
Facultatief. Mogelijke opties bepalen of de PVS-pagina buiten rij moet worden vrijgemaakt.
@clean_option is int, met een standaardwaarde van 0
. Deze verwijzing is niet vaak nodig en de standaardwaarde 0
wordt aanbevolen.
Waarde | Beschrijving |
---|---|
0 |
Standaard, geen optie opgegeven |
1 |
Archief met externe versies zonder de inhoud van afzonderlijke PVS-pagina's te controleren |
2 |
Archief met off-row-versies waarbij elke PVS-pagina wordt bezocht |
3 |
alleen in-rij-versiearchief |
4 |
alleen intern gebruik |
Codewaarden retourneren
0
(geslaagd) of 1
(mislukt).
Resultatenset
Geen.
Machtigingen
Vereist de ALTER
machtiging voor de database.
Opmerkingen
De sys.sp_persistent_version_cleanup
opgeslagen procedure is synchroon, wat betekent dat deze pas wordt voltooid als alle versiegegevens worden opgeschoond uit de huidige PVS.
In SQL Server 2019 (15.x) wordt het PVS-opschoonproces alleen uitgevoerd voor één database tegelijk. In Azure SQL Database en Azure SQL Managed Instance, en vanaf SQL Server 2022 (16.x), kan het PVS-opschoonproces parallel worden uitgevoerd op meerdere databases in hetzelfde exemplaar.
Als het PVS-opschoonproces al wordt uitgevoerd voor de gewenste database, wordt deze opgeslagen procedure geblokkeerd voordat een ander PVS-opschoonproces wordt gestart. Actieve, langlopende transacties in elke database op hetzelfde exemplaar van de database-engine waarvoor ADR is ingeschakeld, kunnen ook PVS-opschoning blokkeren.
U kunt de versiereinigerstaak controleren door te zoeken naar het proces met de volgende voorbeeldquery:
SELECT *
FROM sys.dm_exec_requests
WHERE command LIKE '%PERSISTED_VERSION_CLEANER%';
Als ADR is uitgeschakeld, voert u sys.sp_persistent_version_cleanup
uit om eerdere versies nog steeds in de PVS op te schonen.
Voorbeelden
Als u het PVS-opschoonproces handmatig wilt activeren tussen werkbelastingen of tijdens onderhoudsvensters, gebruikt u het volgende voorbeeldscript:
EXEC sys.sp_persistent_version_cleanup [database_name];
Bijvoorbeeld:
EXEC sys.sp_persistent_version_cleanup [WideWorldImporters];
U kunt ook uitgaan van de huidige databasecontext:
USE [WideWorldImporters];
GO
EXEC sys.sp_persistent_version_cleanup;