La
documentación de Microsoft dice que para resolver este error es necesario
actualizar el SQL con el Service Pack 3 y el Cumulative Update 2, sin embargo luego de
hacer esto en mi base de datos seguía marcando este error al querer hacer un
backup o una reducción de tamaño de archivos.
Investigando
un poco más, detecte que el problema es ocasionado por Change Tracking o
Seguimiento de Cambios, por lo que una vez deshabilitada esta opción tanto en
las tablas como en la base de datos ya fue posible realizar backups y reducción
de la base de datos.
El
Change Tracking o seguimiento de Cambios es una solución ligera que proporciona un
mecanismo de seguimiento de cambios eficaz para las aplicaciones, una vez
configurado el seguimiento de cambios para una tabla, cualquier instrucción DML
que afecte a las filas en la tabla, registra la información de seguimiento de cambios
pertinente para cada fila modificada.
--Resolver
error provocado por Change Tracking o Seguimiento de Cambios
--Desactivar
tabla por tabla el Change Tracking
DECLARE @TableName varchar(255)
DECLARE TableCursor CURSOR FOR
SELECT b.name
FROM sys.change_tracking_tables
a
INNER JOIN sysobjects b
ON
b.id=a.object_id
ORDER BY b.name
OPEN TableCursor
FETCH NEXT FROM TableCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
Exec ('ALTER TABLE ['+@TableName+'] DISABLE CHANGE_TRACKING')
FETCH NEXT FROM TableCursor INTO @TableName
END
CLOSE TableCursor
DEALLOCATE TableCursor
--Desactivar
el seguimiento de cambios en la base de datos
ALTER DATABASE [Nombre Base de Datos] SET CHANGE_TRACKING = OFF
Luego procedemos a realizar el backup o
la instrucción ShrinkDB y al terminar volvemos a activar el seguimiento de
cambios.
--Activar el
seguimiento de cambios en la base de datos
ALTER DATABASE [Nombre Base de Datos] SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 1 DAYS, AUTO_CLEANUP = ON)