Udostępnij za pośrednictwem


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 1ta 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. @clean_option jest z wartością domyślną . To odwołanie nie jest często potrzebne, a zalecana jest wartość domyślna 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;