sys.sp_persistent_version_cleanup (Transact-SQL)

Se aplica a: SQL Server 2019 (15.x) Azure SQL DatabaseAzure SQL Managed Instance

Inicia manualmente el proceso de limpieza del almacén de versiones persistente (PVS), un elemento clave de la recuperación acelerada de bases de datos (ADR). Este limpiador revierte los datos no confirmados en el PVS de las transacciones anuladas.

Normalmente no es necesario iniciar manualmente el proceso de limpieza de PVS mediante sys.sp_persistent_version_cleanup. Sin embargo, en algunos escenarios, en un período conocido de descanso o recuperación después de una actividad OLTP ocupada, es posible que desee iniciar manualmente el proceso de limpieza de PVS.

Para más información sobre ADR en Azure SQL, consulte Recuperación acelerada de la base de datos en Azure SQL.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @dbname = ] N'dbname'

Opcional. Nombre de la base de datos que se va a limpiar. Si no se proporciona, usa el contexto de base de datos actual. @dbname es sysname, con un valor predeterminado de NULL.

[ @scanallpages = ] scanallpages

Opcional. @scanallpages es bit, con un valor predeterminado de 0. Cuando se establece 1en , esta opción fuerza la limpieza de todas las páginas de base de datos aunque no tenga versiones.

[ @clean_option = ] clean_option

Opcional. Las opciones posibles determinan si se va a reclamar o no la página PVS fuera de la fila. @clean_option es int, con un valor predeterminado de 0. Esta referencia no suele ser necesaria y se recomienda el valor 0 predeterminado.

Value Descripción
0 Valor predeterminado, sin opción especificada
1 almacén de versiones fuera de fila sin comprobar el contenido de la página PVS individual
2 almacén de versiones fuera de fila con cada página de PVS visitada
3 Solo almacén de versiones en fila
4 solo uso interno

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Conjunto de resultados

Ninguno.

Permisos

Requiere el permiso ALTER DATABASE para ejecutarse.

Comentarios

El sys.sp_persistent_version_cleanup procedimiento almacenado es sincrónico, lo que significa que no se completa hasta que toda la información de la versión se limpia del PVS actual.

En SQL Server 2019 (15.x), el proceso de limpieza de PVS solo se ejecuta durante una base de datos cada vez. En Azure SQL Database y Azure SQL Instancia administrada, y a partir de SQL Server 2022 (16.x), el proceso de limpieza de PVS se puede ejecutar en paralelo en varias bases de datos de la misma instancia.

Si el proceso de limpieza de PVS ya se está ejecutando en la base de datos deseada, este procedimiento almacenado se bloquea y espera a que finalice antes de iniciar otro proceso de limpieza de PVS. Las transacciones activas y de larga duración en cualquier base de datos en la que ADR esté habilitada también pueden bloquear la limpieza del PVS. Puede supervisar la tarea de limpieza de versiones buscando su proceso con la siguiente consulta de ejemplo:

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

Limitaciones

La creación de reflejo de la base de datos no se puede establecer para una base de datos donde ADR está habilitada o todavía hay versiones en el almacén de versiones persistente (PVS). Si ADR está deshabilitado, ejecute sys.sp_persistent_version_cleanup para limpiar las versiones anteriores aún en el PVS.

Ejemplos

Para activar el proceso de limpieza de PVS manualmente entre cargas de trabajo o durante las ventanas de mantenimiento, use el siguiente script de ejemplo:

EXEC sys.sp_persistent_version_cleanup [database_name];

Por ejemplo:

EXEC sys.sp_persistent_version_cleanup [WideWorldImporters];

O bien, para asumir el contexto actual de la base de datos:

USE [WideWorldImporters];
GO
EXEC sys.sp_persistent_version_cleanup;