Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för: SQL Server 2019 (15.x)
Azure SQL Database
Azure 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 tar också bort ogenomförda 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
. Men i vissa scenarier kanske du vill 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%';
En aktiv transaktion kan hindra PVS-rensningsprocessen från att starta. Om detta inträffar väntar sessionen som kör den sys.sp_persistent_version_cleanup
lagrade proceduren med PVS_CLEANUP_LOCK väntetyp. Du kan vänta tills transaktionen har slutförts, eller så kan du överväga att avsluta blockeringssessionen med en aktiv transaktion, om möjligt.
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;