Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: SQL Server 2019 (15.x) и более поздних версий
базы данных SQL
Azure Для Управляемого экземпляра
SQL Azure в Microsoft Fabric
Вручную запускает процесс очистки хранилища постоянных версий (PVS), ключевой элемент ускоренного восстановления базы данных (ADR). Это средство также удаляет незафиксированные данные в PVS из прерванных транзакций.
Обычно не требуется запускать процесс очистки PVS вручную sys.sp_persistent_version_cleanup. Однако в некоторых сценариях может потребоваться инициировать процесс очистки PVS вручную в течение известного периода отдыха или восстановления после занятого действия OLTP.
Дополнительные сведения об ADR см. в ускоренного восстановления базы данных.
Соглашения о синтаксисе 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 для базы данных.
Замечания
Хранимая 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%';
Активная транзакция может предотвратить запуск процесса очистки PVS. В этом случае сеанс, на котором выполняется хранимая процедура sys.sp_persistent_version_cleanup, ожидается с типом ожидания PVS_CLEANUP_LOCK. Вы можете дождаться завершения транзакции или по возможности рассмотреть возможность убийства сеанса блокировщика с активной транзакцией.
Если ADR отключен, выполните очистку sys.sp_persistent_version_cleanup предыдущих версий по-прежнему в PVS.
Примеры
Чтобы активировать процесс очистки PVS вручную между рабочими нагрузками или во время обслуживания, используйте следующий пример сценария:
EXECUTE sys.sp_persistent_version_cleanup [database_name];
Например:
EXECUTE sys.sp_persistent_version_cleanup [WideWorldImporters];
Или предположить текущий контекст базы данных:
USE [WideWorldImporters];
GO
EXECUTE sys.sp_persistent_version_cleanup;