Dela via


sys.sp_persistent_version_cleanup (Transact-SQL)

gäller för: SQL Server 2019 (15.x) Azure SQL DatabaseAzure SQL Managed Instance

Manuellt startar rensningsprocessen för beständigt versionslager (PVS), ett nyckelelement i accelererad databasåterställning (ADR). Den här städaren återställer okomprifierade data i PVS från avbrutna transaktioner.

Det är vanligtvis inte nödvändigt att starta PVS-rensningsprocessen manuellt med hjälp av sys.sp_persistent_version_cleanup. I vissa scenarier kan det dock vara bra att initiera PVS-rensningsprocessen manuellt under en känd viloperiod/återställning efter upptagen OLTP-aktivitet.

Mer information om ADR finns i Accelererad databasåterställning.

Transact-SQL syntaxkonventioner

Syntax

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

Argument

[ @dbname = ] N'dbname'

Valfri. Namnet på databasen som ska rensas. Om det inte anges använder du den aktuella databaskontexten. @dbname är sysname, med standardvärdet NULL.

[ @scanallpages = ] scanallpages

Valfri. @scanallpages är bit, med standardvärdet 0. När det här alternativet är inställt på 1framtvingar det rensning av alla databassidor även om de inte är versionshanterade.

[ @clean_option = ] clean_option

Valfri. Möjliga alternativ avgör om PVS-sidan ska frigöras eller inte. @clean_option är int, med standardvärdet 0. Den här referensen behövs inte ofta och standardvärdet 0 rekommenderas.

Värde Beskrivning
0 Standard, inget alternativ har angetts
1 versionsarkiv utanför rad utan att kontrollera enskilda PVS-sidinnehåll
2 versionsarkiv utanför rad med varje PVS-sida som besöks
3 Versionsarkiv på rad
4 endast intern användning

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Resultatuppsättning

Ingen.

Behörigheter

Kräver ALTER behörighet för databasen.

Anmärkningar

Den sys.sp_persistent_version_cleanup lagrade proceduren är synkron, vilket innebär att den inte slutförs förrän all versionsinformation rensas från aktuell PVS.

I SQL Server 2019 (15.x) körs PVS-rensningsprocessen endast för en databas i taget. I Azure SQL Database och Azure SQL Managed Instance, och från och med SQL Server 2022 (16.x), kan PVS-rensningsprocessen köras parallellt mot flera databaser i samma instans.

Om PVS-rensningsprocessen redan körs mot den önskade databasen blockeras den här lagrade proceduren innan du påbörjar en ny PVS-rensningsprocess. Aktiva, långvariga transaktioner i alla databaser på samma databasmotorinstans som har ADR aktiverat kan också blockera PVS-rensning.

Du kan övervaka versionsrengöringsuppgiften genom att leta efter dess process med följande exempelfråga:

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

Om ADR är inaktiverat kör du sys.sp_persistent_version_cleanup för att rensa tidigare versioner som fortfarande finns i PVS.

Exempel

Om du vill aktivera PVS-rensningsprocessen manuellt mellan arbetsbelastningar eller under underhållsperioder använder du följande exempelskript:

EXEC sys.sp_persistent_version_cleanup [database_name];

Till exempel:

EXEC sys.sp_persistent_version_cleanup [WideWorldImporters];

Eller för att anta den aktuella databaskontexten:

USE [WideWorldImporters];
GO
EXEC sys.sp_persistent_version_cleanup;