sys.sp_persistent_version_cleanup (Transact-SQL)

Область применения: SQL Server 2019 (15.x) База данных SQL Azure Управляемый экземпляр SQL Azure

Вручную запускает процесс очистки хранилища постоянных версий (PVS), ключевой элемент ускоренного восстановления базы данных (ADR). Этот очистка откатывает незафиксированные данные в PVS из прерванных транзакций.

Обычно не требуется запускать процесс очистки PVS вручную sys.sp_persistent_version_cleanup. Однако в некоторых сценариях в известном периоде отдыха или восстановления после занятого действия OLTP может потребоваться инициировать процесс очистки PVS вручную.

Дополнительные сведения об ADR в Azure SQL см. в статье Ускоренное восстановление базы данных в Azure SQL.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

[ @dbname = ] N'dbname'

Необязательно. Имя базы данных для очистки. Если он не указан, использует текущий контекст базы данных. @dbname — sysname с значением по умолчаниюNULL.

[ @scanallpages = ] scanallpages

Необязательно. @scanallpages бит с значением по умолчанию0. Если задано значение 1, этот параметр принудительно очищает все страницы базы данных, даже если версия не установлена.

[ @clean_option = ] clean_option

Необязательно. Возможные параметры определяют, следует ли отказаться от страницы PVS вне строки. @clean_option имеет значение int с значением по умолчанию0. Эта ссылка обычно не требуется, поэтому рекомендуется использовать значение 0 по умолчанию.

значение Описание
0 По умолчанию параметр не указан
1 Хранилище версий вне строки без проверка содержимого отдельной страницы PVS
2 Хранилище версий вне строки с каждой страницей PVS
3 Только хранилище версий в строке
4 только внутреннее использование

Значения кода возврата

0 (успешно) или 1 (сбой).

Результирующий набор

Нет.

Разрешения

Требуется разрешение ALTER DATABASE для выполнения.

Замечания

Хранимая sys.sp_persistent_version_cleanup процедура синхронна, что означает, что она не завершается до очистки всех сведений о версии из текущего PVS.

В SQL Server 2019 (15.x) процесс очистки PVS выполняется только для одной базы данных одновременно. В База данных SQL Azure и Управляемый экземпляр SQL Azure и начиная с SQL Server 2022 (16.x), процесс очистки PVS может выполняться параллельно с несколькими базами данных в одном экземпляре.

Если процесс очистки PVS уже запущен в требуемой базе данных, эта хранимая процедура блокируется и ожидает завершения перед началом другого процесса очистки PVS. Активные, длительные транзакции в любой базе данных, в которой включен ADR, также могут блокировать очистку PVS. Вы можете отслеживать задачу очистки версии, выполнив поиск процесса с помощью следующего примера запроса:

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

Ограничения

Зеркальное отображение базы данных не может быть задано для базы данных, в которой включен ADR или в хранилище сохраняемых версий (PVS) по-прежнему существуют версии. Если ADR отключен, выполните очистку sys.sp_persistent_version_cleanup предыдущих версий по-прежнему в PVS.

Примеры

Чтобы активировать процесс очистки PVS вручную между рабочими нагрузками или во время обслуживания, используйте следующий пример сценария:

EXEC sys.sp_persistent_version_cleanup [database_name];

Например:

EXEC sys.sp_persistent_version_cleanup [WideWorldImporters];

Или предположить текущий контекст базы данных:

USE [WideWorldImporters];
GO
EXEC sys.sp_persistent_version_cleanup;