Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server 2019 (15.x)
База данных SQL Azure Управляемый экземпляр SQL Azure
Вручную запускает процесс очистки хранилища постоянных версий (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 вручную между рабочими нагрузками или во время обслуживания, используйте следующий пример сценария:
EXEC sys.sp_persistent_version_cleanup [database_name];
Например:
EXEC sys.sp_persistent_version_cleanup [WideWorldImporters];
Или предположить текущий контекст базы данных:
USE [WideWorldImporters];
GO
EXEC sys.sp_persistent_version_cleanup;