Habilitar y deshabilitar el seguimiento de cambios (SQL Server)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

En este tema se describe cómo habilitar y deshabilitar el seguimiento de cambios para una tabla y una base de datos.

Habilitar el seguimiento de cambios para una base de datos

Para poder utilizarlo, el seguimiento de cambios se debe habilitar previamente en el nivel de la base de datos. En el ejemplo siguiente se muestra cómo habilitar el seguimiento de cambios mediante ALTER DATABASE.

ALTER DATABASE AdventureWorks2022  
SET CHANGE_TRACKING = ON  
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)  

También puede habilitar el seguimiento de cambios en SQL Server Management Studio mediante el cuadro de diálogo Propiedades de la base de datos (página ChangeTracking). Si una base de datos contiene tablas optimizadas para memoria, no podrá habilitar el seguimiento de cambios con SQL Server Management Studio. Para habilitarlo, use T-SQL.

Puede especificar las opciones CHANGE_RETENTION y AUTO_CLEANUP al habilitar el seguimiento de cambios, y puede cambiar los valores en cualquier momento una vez que esté habilitado.

El valor de retención de los cambios especifica el período de tiempo para el cual se conserva la información del seguimiento de cambios. La información del seguimiento de cambios anterior a este período de tiempo se quita periódicamente. A la hora de establecer este valor, debería tener en cuenta la frecuencia con que las aplicaciones se sincronizarán con las tablas en la base de datos. El período de retención especificado debe ser como mínimo igual al período máximo de tiempo entre sincronizaciones. Si una aplicación obtiene los cambios en intervalos más prolongados, los resultados que se devuelven podrían ser incorrectos, puesto que es posible que parte de la información de los cambios se haya quitado. Para evitar obtener resultados incorrectos, una aplicación puede utilizar la función del sistema CHANGE_TRACKING_MIN_VALID_VERSION con el fin de determinar si el intervalo entre las sincronizaciones ha sido demasiado largo.

Puede usar la opción AUTO_CLEANUP para habilitar o deshabilitar la tarea de limpieza que quita la información de seguimiento de cambios antigua. Se trata de algo que puede ser útil en los casos en que haya un problema temporal que evite que las aplicaciones se sincronicen y sea necesario paralizar el proceso de eliminación de información del seguimiento de cambios anterior al período de retención hasta que se resuelva el problema.

Tenga en cuenta lo siguiente para cualquier base de datos que utilice seguimiento de cambios:

  • Para utilizar el seguimiento de cambios, el nivel de compatibilidad de la base de datos debe establecerse en 90 o mayor. Si una base de datos tiene un nivel de compatibilidad menor que 90, puede configurar el seguimiento de cambios. Sin embargo, la función CHANGETABLE, que se utiliza para obtener información del seguimiento de cambios, devolverá un error.

  • El uso del aislamiento de instantánea es la manera más fácil de ayudarle a asegurarse de que toda la información del seguimiento de cambios es coherente. Por esta razón, recomendamos encarecidamente activar el aislamiento de instantánea para la base de datos. Para obtener más información, vea Trabajar con Change Tracking (SQL Server).

Habilitar el seguimiento de cambios para una tabla

El seguimiento de cambios debe estar habilitado para cada tabla en la que desea realizar el seguimiento. Cuando el seguimiento de cambios se habilita, su información correspondiente se mantiene para todas las filas de la tabla a las que afecta una operación DML.

En el ejemplo siguiente se muestra cómo habilitar el seguimiento de cambios para una tabla utilizando ALTER TABLE.

ALTER TABLE Person.Contact  
ENABLE CHANGE_TRACKING  
WITH (TRACK_COLUMNS_UPDATED = ON)  

También puede habilitar el seguimiento de cambios para una tabla en SQL Server Management Studio mediante el cuadro de diálogo Database Properties (ChangeTracking Page) (Propiedades de la base de datos [página ChangeTracking]).

Cuando la opción TRACK_COLUMNS_UPDATED se activa, el motor de base de datos de SQL Server almacena información adicional sobre las columnas que se actualizaron en la tabla de seguimiento de cambios interna. El seguimiento de columnas puede permitir a una aplicación sincronizar solo las columnas que fueron actualizadas, lo cual puede mejorar la eficacia y el rendimiento. Sin embargo, dado que el mantenimiento de la información de seguimiento de las columnas agrega una sobrecarga adicional de almacenamiento, esta opción está desactivada de forma predeterminada.

Deshabilitación de Change Tracking para una tabla o una base de datos

El seguimiento de cambios para todas las tablas sometidas al seguimiento de cambios debe deshabilitarse antes de poder deshabilitar el seguimiento de cambios para toda la base de datos. Para determinar qué tablas de una base de datos tienen habilitado el seguimiento de cambios, use la vista de catálogo sys.change_tracking_tables .

En el siguiente ejemplo se muestra cómo deshabilitar el seguimiento de cambios para una tabla utilizando ALTER TABLE.

ALTER TABLE Person.Contact  
DISABLE CHANGE_TRACKING;  

Cuando ninguna de las tablas de una base de datos está sometida a seguimiento de cambios, es posible deshabilitar el seguimiento de cambios para la base de datos. En el ejemplo siguiente se muestra cómo deshabilitar el seguimiento de cambios para una base de datos mediante ALTER DATABASE.

ALTER DATABASE AdventureWorks2022  
SET CHANGE_TRACKING = OFF  

Consulte también

Propiedades de la base de datos (página ChangeTracking)
Opciones de ALTER DATABASE SET (Transact-SQL)
sys.change_tracking_databases (Transact-SQL)
sys.change_tracking_tables (Transact-SQL)
Seguimiento de cambios de datos (SQL Server)
Acerca del seguimiento de cambios (SQL Server)
Trabajar con datos modificados (SQL Server)
Administrar el seguimiento de cambios (SQL Server)