Síntomas
Supongamos que habilita el Change Tracking para una o varias tablas en Microsoft SQL Server 2017 o 2019, y ha establecido AUTO_CLEANUP = ON. Observa que no se eliminan ni limpian filas de las tablas laterales ni de la tabla del sistema sys.syscommittab incluso después del período de retención. Además, observa los siguientes síntomas:
Si se conecta mediante una conexión de Administración dedicada y consulta la versión de limpieza no válida y la versión de limpieza protegida, las encontrará negativas:
select * from sys.sysobjvalues where valclass = 7 and objid = 1003 -- invalid
select * from sys.sysobjvalues where valclass = 7 and objid = 1004 -- HardenedSi ejecuta el siguiente SP para limpiar sys.syscommittab manualmente, no realizará la limpieza y devolverá la versión de limpieza protegida como negativa:
sp_flush_commit_table_on_demand ejecutivo
Resultado
El valor devuelto por change_tracking_hardened_cleanup_version() es -nnnnnn.Si recopila una sesión de eventos extendida con change_tracking_cleanup de eventos durante la limpieza automática del seguimiento de cambios, observará que CleanupStatusChange está establecido en 32 (error) y que el trabajo de limpieza existe:
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".
Resolución
Este problema se ha corregido en las siguientes actualizaciones acumulativas para SQL Server:
Acerca de las actualizaciones acumulativas para SQL Server:
Cada nueva actualización acumulativa para SQL Server contiene todas las revisiones y correcciones de seguridad que se incluyeron con la actualización acumulativa anterior. Consulte las actualizaciones acumulativas más recientes para SQL Server:
- Actualización acumulativa más reciente para SQL Server 2019
- Actualización acumulativa más reciente para SQL Server 2017
Nota Para resolver este problema, debe habilitar la marca de seguimiento 8290 y dejar que se ejecute el proceso de limpieza automática. Una vez habilitada esta marca de seguimiento, el proceso de limpieza automática de seguimiento de cambios restablecerá la versión de limpieza no válida a una versión de limpieza basada en el período de retención. Esta marca de seguimiento se puede habilitar en el nivel de sesión o en el nivel de inicio. Para comprender la causa principal de por qué la versión de limpieza se volvió negativa, se recomienda que llame al soporte técnico y proporcione más detalles.
Referencias
Obtenga información sobre la terminología que usa Microsoft para describir las actualizaciones de software.