Megosztás a következőn keresztül:


sys.sp_persistent_version_cleanup (Transact-SQL)

A következőkre vonatkozik: Az SQL Server 2019 (15.x) és újabb verziói az Azure SQL DatabaseAzure SQL Managed InstanceSQL Database-adatbázist a Microsoft Fabricben

Manuálisan elindítja az állandó verziótár (PVS) törlési folyamatát, amely a gyorsított adatbázis-helyreállítás (ADR) kulcsfontosságú eleme. Ez a tisztító emellett eltávolítja a nem véglegesített adatokat a PVS-ben a megszakított tranzakciókból.

Általában nem szükséges manuálisan elindítani a PVS-törlési folyamatot sys.sp_persistent_version_cleanuphasználatával. Bizonyos esetekben azonban érdemes lehet manuálisan elindítani a PVS-törlési folyamatot egy ismert rest/helyreállítási időszak alatt, foglalt OLTP-tevékenység után.

További információ az ADR-ről: Gyorsított adatbázis-helyreállítás.

Transact-SQL szintaxis konvenciói

Szintaxis

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

Érvek

[ @dbname = ] N'dbname'

Szabadon választható. A törölni kívánt adatbázis neve. Ha nincs megadva, az aktuális adatbázis-környezetet használja. @dbname a sysnamealapértelmezett .

[ @scanallpages = ] Scanallpages

Szabadon választható. @scanallpagesbit, alapértelmezés szerint 0. Ha 1értékre van állítva, ez a beállítás az összes adatbázislap eltávolítását kényszeríti, még akkor is, ha nem verziószámozott.

[ @clean_option = ] clean_option

Szabadon választható. A lehetséges beállítások határozzák meg, hogy a soron kívüli PVS-oldal visszaigénylése nem lehetséges-e. @clean_optionint, alapértelmezett értéke 0. Ez a hivatkozás általában nem szükséges, és ajánlott az alapértelmezett 0 érték.

Érték Leírás
0 Alapértelmezett, nincs megadva beállítás
1 soron kívüli verziótár az egyes PVS-lapok tartalmának ellenőrzése nélkül
2 minden egyes PVS oldallal meglátogatott soros verzió tároló
3 csak a soron belüli verziótár
4 csak belső használatra

Kódértékek visszaadása

0 (sikeres) vagy 1 (hiba).

Eredményhalmaz

Egyik sem.

Engedélyek

Az adatbázishoz ALTER engedély szükséges.

Megjegyzések

A sys.sp_persistent_version_cleanup tárolt eljárás szinkron, ami azt jelenti, hogy nem fejeződik be, amíg az összes verzióinformáció el nem törlődik az aktuális PVS-ből.

Az SQL Server 2019 -ben (15.x) a PVS-törlési folyamat egyszerre csak egy adatbázishoz fut. Az Azure SQL Database-ben és a felügyelt Azure SQL-példányban, valamint az SQL Server 2022-től (16.x) kezdődően a PVS-törlési folyamat párhuzamosan, ugyanazon példány több adatbázisával is végrehajtható.

Ha a PVS-törlési folyamat már fut a kívánt adatbázison, a rendszer letiltja ezt a tárolt eljárást, mielőtt újabb PVS-tisztítási folyamatot indít. Az aktív, hosszú ideig futó tranzakciók ugyanazon az adatbázismotor-példányon, amelyen engedélyezve van az ADR, blokkolhatják a PVS-törlést is.

A verziótisztaabb feladat figyeléséhez keresse meg annak folyamatát az alábbi minta lekérdezéssel:

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

Egy aktív tranzakció megakadályozhatja a PVS-törlési folyamat elindítását. Ha ez történik, a sys.sp_persistent_version_cleanup tárolt eljárást futtató munkamenet a PVS_CLEANUP_LOCK várakozási típussal várakozik. Megvárhatja, amíg a tranzakció befejeződik, vagy ha lehetséges, érdemes lehet megölnie a blokkoló munkamenetet egy aktív tranzakcióval.

Ha az ADR le van tiltva, futtassa a sys.sp_persistent_version_cleanup a korábbi verziók PVS-ben való törléséhez.

Példák

Ha manuálisan szeretné aktiválni a PVS-tisztítási folyamatot a számítási feladatok között vagy a karbantartási időszakokban, használja a következő példaszkriptet:

EXECUTE sys.sp_persistent_version_cleanup [database_name];

Például:

EXECUTE sys.sp_persistent_version_cleanup [WideWorldImporters];

Vagy az aktuális adatbázis-környezet feltételezéséhez:

USE [WideWorldImporters];
GO

EXECUTE sys.sp_persistent_version_cleanup;