Delen via


sys.sp_persistent_version_cleanup (Transact-SQL)

van toepassing op: SQL Server 2019 (15.x) Azure SQL DatabaseAzure 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;