sys.sp_persistent_version_cleanup (Transact-SQL)
Dotyczy: SQL Server 2019 (15.x) Azure SQL DatabaseAzure SQL Managed Instance
Ręcznie uruchamia proces oczyszczania magazynu wersji trwałej (PVS), który jest kluczowym elementem przyspieszonego odzyskiwania bazy danych (ADR). Ten program czyszczący cofa niezatwierdzone dane w pvS z przerwanych transakcji.
Zwykle nie jest konieczne ręczne uruchomienie procesu oczyszczania PVS przy użyciu sys.sp_persistent_version_cleanup
. Jednak w niektórych scenariuszach w znanym okresie odpoczynku/odzyskiwania po zajętym działaniu OLTP można ręcznie zainicjować proces oczyszczania PVS.
Aby uzyskać więcej informacji na temat reguły ADR, zobacz przyspieszone odzyskiwanie bazy danych.
Transact-SQL konwencje składni
Składnia
sp_persistent_version_cleanup
[ [ @dbname = ] N'dbname' ]
[ , [ @scanallpages = ] scanallpages ]
[ , [ @clean_option = ] clean_option ]
[ ; ]
Argumenty
[ @dbname = ] N'dbname'
Fakultatywny. Nazwa bazy danych do oczyszczenia. Jeśli nie zostanie podana, użyje bieżącego kontekstu bazy danych.
@dbname jest nazwa systemu, z wartością domyślną NULL
.
[ @scanallpages = ] scanallpages
Fakultatywny.
@scanallpages jest bitowąz wartością domyślną 0
. Po ustawieniu wartości 1
ta opcja wymusza czyszczenie wszystkich stron bazy danych, nawet jeśli nie są wersjonowane.
[ @clean_option = ] clean_option
Fakultatywny. Możliwe opcje określają, czy odzyskać stronę PVS poza wierszem. 0
.
Wartość | Opis |
---|---|
0 |
Domyślnie nie określono żadnej opcji |
1 |
magazyn wersji poza wierszem bez sprawdzania zawartości poszczególnych stron PVS |
2 |
magazyn wersji poza wierszem z każdą odwiedzoną stroną PVS |
3 |
Tylko magazyn wersji w wierszu |
4 |
tylko do użytku wewnętrznego |
Zwracanie wartości kodu
0
(powodzenie) lub 1
(niepowodzenie).
Zestaw wyników
Żaden.
Uprawnienia
Wymaga uprawnienia ALTER
w bazie danych.
Uwagi
Procedura składowana sys.sp_persistent_version_cleanup
jest synchroniczna, co oznacza, że nie zostanie ukończona, dopóki wszystkie informacje o wersji nie będą czyszczone z bieżącego serwera PVS.
W programie SQL Server 2019 (15.x) proces oczyszczania PVS jest wykonywany tylko dla jednej bazy danych jednocześnie. W usługach Azure SQL Database i Azure SQL Managed Instance oraz począwszy od programu SQL Server 2022 (16.x) proces oczyszczania PVS może być wykonywany równolegle względem wielu baz danych w tym samym wystąpieniu.
Jeśli proces oczyszczania PVS jest już uruchomiony względem żądanej bazy danych, ta procedura składowana zostanie zablokowana przed rozpoczęciem innego procesu oczyszczania PVS. Aktywne, długotrwałe transakcje w dowolnej bazie danych w tym samym wystąpieniu aparatu bazy danych, które mają włączone reguły ADR, mogą również blokować czyszczenie PVS.
Zadanie czyszczenia wersji można monitorować, wyszukując jego proces za pomocą następującego przykładowego zapytania:
SELECT *
FROM sys.dm_exec_requests
WHERE command LIKE '%PERSISTED_VERSION_CLEANER%';
Jeśli adr jest wyłączona, uruchom sys.sp_persistent_version_cleanup
, aby wyczyścić poprzednie wersje nadal w pvS.
Przykłady
Aby ręcznie aktywować proces oczyszczania pvS między obciążeniami lub podczas okien obsługi, użyj następującego przykładowego skryptu:
EXEC sys.sp_persistent_version_cleanup [database_name];
Na przykład:
EXEC sys.sp_persistent_version_cleanup [WideWorldImporters];
Możesz też założyć bieżący kontekst bazy danych:
USE [WideWorldImporters];
GO
EXEC sys.sp_persistent_version_cleanup;