Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: SQL Server 2019 (15.x) и более поздних версий
базы данных SQL
Azure Для Управляемого экземпляра
SQL Azure в Microsoft Fabric
Вручную запускает процесс очистки хранилища постоянных версий (PVS), ключевой элемент ускоренного восстановления базы данных (ADR). Средство очистки удаляет устаревшие версии строк из хранилища PVS в строке и вне строк, а также удаляет незафиксированные изменения в 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
Необязательно. Параметр для определения типа выполняемой очистки.
@clean_option имеет значение int с значением по умолчанию0. Этот параметр обычно не требуется, поэтому рекомендуется использовать значение 0 по умолчанию.
| значение | Описание |
|---|---|
0 |
По умолчанию выполните все очистки. |
1 |
Очистка хранилища версий вне строки без проверки содержимого страницы PVS. Быстрее, но может пропустить размещение неиспользуемых страниц в PVS. Это поведение по умолчанию, когда @clean_option опущен или задано значение 0. |
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. Вы можете дождаться завершения транзакции или по возможности рассмотреть возможность убийства сеанса блокировщика с активной транзакцией.
Очистка PVS, инициированная с помощью, sys.sp_persistent_version_cleanup может занять больше времени, если включена автоматическая сжатие индекса . Если необходимо ускорить очистку PVS, инициированную этой хранимой процедурой, попробуйте временно отключить автоматическое сжатие индекса.
Если 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;