Compartir a través de


Habilitar y deshabilitar el seguimiento de cambios (SQL Server)

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

Habilitación del 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 AdventureWorks2012  
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).

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 cambios especifica el período de tiempo durante el que se mantiene la información de seguimiento de cambios. La información de seguimiento de cambios anterior a este período de tiempo se quita periódicamente. Al establecer este valor, debe tener en cuenta la frecuencia con la que las aplicaciones se sincronizarán con las tablas de 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 cambios a intervalos más largos, los resultados que se devuelven podrían ser incorrectos porque es probable que se haya quitado parte de la información de cambio. 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. Esto puede ser útil cuando hay un problema temporal que impide que las aplicaciones se sincronicen y el proceso para quitar la información de seguimiento de cambios anterior al período de retención debe pausarse hasta que se resuelva el problema.

Para cualquier base de datos que use el seguimiento de cambios, tenga en cuenta lo siguiente:

  • Para usar el seguimiento de cambios, el nivel de compatibilidad de la base de datos debe establecerse en 90 o superior. Si una base de datos tiene un nivel de compatibilidad inferior a 90, puede configurar el seguimiento de cambios. Sin embargo, la función CHANGETABLE, que se usa para obtener información de 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 este motivo, se recomienda encarecidamente establecer el aislamiento de instantáneas en ON para la base de datos. Para obtener más información, vea Trabajar con Change Tracking (SQL Server).

Habilitar el Seguimiento de Cambios en una tabla

El seguimiento de cambios debe estar habilitado para cada tabla a la que desee realizar el seguimiento. Cuando el seguimiento de cambios está habilitado, la información de seguimiento de cambios se mantiene para todas las filas de la tabla afectadas por una operación DML.

En el ejemplo siguiente se muestra cómo habilitar el seguimiento de cambios para una tabla mediante 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 Propiedades de la base de datos (página ChangeTracking).

Cuando la opción TRACK_COLUMNS_UPDATED está establecida en ON, el motor de base de datos de SQL Server almacena información adicional sobre qué columnas se actualizaron a la tabla de seguimiento de cambios interna. El seguimiento de columnas puede permitir a una aplicación sincronizar solo las columnas que fueron actualizadas, Esto puede mejorar la eficiencia y el rendimiento. Sin embargo, dado que el mantenimiento de la información de seguimiento de columnas agrega cierta sobrecarga de almacenamiento adicional, esta opción se establece en OFF de forma predeterminada.

Deshabilitación del seguimiento de cambios para una base de datos o una tabla

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 las tablas que tienen habilitado el seguimiento de cambios para una base de datos, use la vista de catálogo de sys.change_tracking_tables .

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 de una base de datos mediante ALTER DATABASE.

ALTER DATABASE AdventureWorks2012  
SET CHANGE_TRACKING = OFF  

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

ALTER TABLE Person.Contact  
DISABLE CHANGE_TRACKING;  

Véase 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)