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_cleanup
starten. 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 <
[ @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;