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å 1
framtvingar 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;