Freigeben über


sys.sp_persistent_version_cleanup (Transact-SQL)

Gilt für: SQL Server 2019 (15.x) Azure SQL-Datenbank Azure SQL Managed Instance

Startet manuell den Bereinigungsprozess für beständigen Versionsspeicher (PVS), ein Schlüsselelement der beschleunigten Datenbankwiederherstellung (ADR). Dieser Cleaner rollt nicht ausgelassene Daten in der PVS aus abgebrochenen Transaktionen zurück.

Normalerweise ist es nicht notwendig, den PVS-Bereinigungsprozess manuell zu sys.sp_persistent_version_cleanupstarten. In einigen Szenarien sollten Sie den PVS-Bereinigungsprozess in einem bekannten Zeitraum der Ruhe/Wiederherstellung nach der olTP-Aktivität jedoch manuell initiieren.

Weitere Informationen zu ADR in Azure SQL finden Sie unter Beschleunigte Datenbankwiederherstellung in Azure SQL.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @dbname = ] N'dbname'

Optional. Der Name der Datenbank, die bereinigt werden soll. Wenn nicht angegeben, wird der aktuelle Datenbankkontext verwendet. @dbname ist "sysname" mit der Standardeinstellung "NULL.

[ @scanallpages = ] scanallpages

Optional. @scanallpages ist bit, mit einem Standardwert von 0. Wenn diese Option auf <a0/> festgelegt ist, wird die Bereinigung aller Datenbankseiten auch dann erzwungen, wenn dies nicht der Fall ist.

[ @clean_option = ] clean_option

Optional. Mögliche Optionen bestimmen, ob die PvS-Seite aus zeilenweise zurückgezahlt werden soll. @clean_option ist int, mit einem Standardwert von 0. Dieser Verweis ist nicht häufig erforderlich, und der Standardwert 0 wird empfohlen.

Wert Beschreibung
0 Standard, keine Option angegeben
1 Off-Row-Versionsspeicher ohne Überprüfung einzelner PVS-Seiteninhalte
2 Off-Row-Versionsspeicher mit jeder besuchten PVS-Seite
3 Nur In-Row-Versionsspeicher
4 Nur interne Verwendung

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Resultset

Keine.

Berechtigungen

Erfordert die BERECHTIGUNG ALTER DATABASE, die ausgeführt werden soll.

Hinweise

Die sys.sp_persistent_version_cleanup gespeicherte Prozedur ist synchron, d. h., sie wird erst abgeschlossen, wenn alle Versionsinformationen aus dem aktuellen PVS bereinigt werden.

In SQL Server 2019 (15.x) wird der PVS-Bereinigungsprozess nur jeweils für eine Datenbank ausgeführt. In Azure SQL-Datenbank und Azure SQL verwaltete Instanz und beginnend mit SQL Server 2022 (16.x) kann der PVS-Bereinigungsprozess parallel für mehrere Datenbanken in derselben Instanz ausgeführt werden.

Wenn der PVS-Bereinigungsprozess bereits für die gewünschte Datenbank ausgeführt wird, wird diese gespeicherte Prozedur blockiert und wartet auf den Abschluss, bevor ein weiterer PVS-Bereinigungsprozess gestartet wird. Aktive, lange ausgeführte Transaktionen in jeder Datenbank, in der ADR aktiviert ist, können auch die Bereinigung der PVS blockieren. Sie können die Version übersichtlicher überwachen, indem Sie mit der folgenden Beispielabfrage nach dem Prozess suchen:

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

Begrenzungen

Die Datenbankspiegelung kann nicht für eine Datenbank festgelegt werden, für die ADR aktiviert ist, oder es gibt weiterhin Versionen im permanenten Versionsspeicher (PVS). Wenn ADR deaktiviert ist, führen Sie die sys.sp_persistent_version_cleanup Ausführung aus, um vorherige Versionen noch im PVS zu bereinigen.

Beispiele

Verwenden Sie das folgende Beispielskript, um den PVS-Bereinigungsprozess manuell zwischen Arbeitslasten oder Wartungsfenstern zu aktivieren:

EXEC sys.sp_persistent_version_cleanup [database_name];

Zum Beispiel:

EXEC sys.sp_persistent_version_cleanup [WideWorldImporters];

Oder gehen Sie wie im aktuellen Datenbankkontext vor:

USE [WideWorldImporters];
GO
EXEC sys.sp_persistent_version_cleanup;