Habilitar y deshabilitar el seguimiento de cambios (SQL Server)Enable and Disable Change Tracking (SQL Server)

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL DatabaseSe aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database

En este tema se describe cómo habilitar y deshabilitar el seguimiento de cambios para una tabla y una base de datos.This topic describes how to enable and disable change tracking for a database and a table.

Habilitar el seguimiento de cambios para una base de datosEnable Change Tracking for a Database

Para poder utilizarlo, el seguimiento de cambios se debe habilitar previamente en el nivel de la base de datos.Before you can use change tracking, you must enable change tracking at the database level. En el ejemplo siguiente se muestra cómo habilitar el seguimiento de cambios mediante ALTER DATABASE.The following example shows how to enable change tracking by using 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 StudioSQL Server Management Studio mediante el cuadro de diálogo Propiedades de la base de datos (página ChangeTracking) .You can also enable change tracking in SQL Server Management StudioSQL Server Management Studio by using the Database Properties (ChangeTracking Page) dialog box. Si una base de datos contiene tablas optimizadas para memoria, no se puede habilitar el seguimiento de cambios con SQL Server Management Studio.If a database contains memory optimized tables, you can’t enable change tracking with SQL Server Management Studio. Para habilitarlo, use T-SQL.To enable, 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.You can specify the CHANGE_RETENTION and AUTO_CLEANUP options when you enable change tracking, and you can change the values at any time after change tracking is enabled.

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.The change retention value specifies the time period for which change tracking information is kept. La información del seguimiento de cambios anterior a este período de tiempo se quita periódicamente.Change tracking information that is older than this time period is removed periodically. 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.When you are setting this value, you should consider how often applications will synchronize with the tables in the database. El período de retención especificado debe ser como mínimo igual al período máximo de tiempo entre sincronizaciones.The specified retention period must be at least as long as the maximum time period between synchronizations. 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.If an application obtains changes at longer intervals, the results that are returned might be incorrect because some of the change information has probably been removed. 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.To avoid obtaining incorrect results, an application can use the CHANGE_TRACKING_MIN_VALID_VERSION system function to determine whether the interval between synchronizations has been too long.

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.You can use the AUTO_CLEANUP option to enable or disable the cleanup task that removes old change tracking information. 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.This can be useful when there is a temporary problem that prevents applications from synchronizing and the process for removing change tracking information older than the retention period must be paused until the problem is resolved.

Tenga en cuenta lo siguiente para cualquier base de datos que utilice seguimiento de cambios:For any database that uses change tracking, be aware of the following:

  • Para utilizar el seguimiento de cambios, el nivel de compatibilidad de la base de datos debe establecerse en 90 o mayor.To use change tracking, the database compatibility level must be set to 90 or greater. Si una base de datos tiene un nivel de compatibilidad menor que 90, puede configurar el seguimiento de cambios.If a database has a compatibility level of less than 90, you can configure change tracking. Sin embargo, la función CHANGETABLE, que se utiliza para obtener información del seguimiento de cambios, devolverá un error.However, the CHANGETABLE function, which is used to obtain change tracking information, will return an 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.Using snapshot isolation is the easiest way for you to help ensure that all change tracking information is consistent. Por esta razón, recomendamos encarecidamente activar el aislamiento de instantánea para la base de datos.For this reason, we strongly recommend that snapshot isolation be set to ON for the database. Para obtener más información, vea Trabajar con el seguimiento de cambios (SQL Server).For more information, see Work with Change Tracking (SQL Server).

Habilitar el seguimiento de cambios para una tablaEnable Change Tracking for a Table

El seguimiento de cambios debe estar habilitado para cada tabla en la que desea realizar el seguimiento.Change tracking must be enabled for each table that you want tracked. 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.When change tracking is enabled, change tracking information is maintained for all rows in the table that are affected by a DML operation.

En el ejemplo siguiente se muestra cómo habilitar el seguimiento de cambios para una tabla utilizando ALTER TABLE.The following example shows how to enable change tracking for a table by using 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 StudioSQL Server Management Studio mediante el cuadro de diálogo Propiedades de la base de datos (página ChangeTracking) .You can also enable change tracking for a table in SQL Server Management StudioSQL Server Management Studio by using the Database Properties (ChangeTracking Page) dialog box.

Cuando la opción TRACK_COLUMNS_UPDATED se activa, Motor de base de datos de SQL ServerSQL Server Database Engine almacena información adicional sobre las columnas que se actualizaron en la tabla de seguimiento de cambios interna.When the TRACK_COLUMNS_UPDATED option is set to ON, the Motor de base de datos de SQL ServerSQL Server Database Engine stores extra information about which columns were updated to the internal change tracking table. El seguimiento de columnas puede permitir a una aplicación sincronizar solo las columnas que fueron actualizadas,Column tracking can enable an application to synchronize only those columns that were updated. lo cual puede mejorar la eficacia y el rendimiento.This can improve efficiency and performance. 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.However, because maintaining column tracking information adds some extra storage overhead, this option is set to OFF by default.

Deshabilitar el seguimiento de cambios para una base de datos o una tablaDisable Change Tracking for a Database or Table

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.Change tracking must first be disabled for all change-tracked tables before change tracking can be set to OFF for the database. 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 .To determine the tables that have change tracking enabled for a database, use the sys.change_tracking_tables catalog view.

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.When no tables in a database track changes, you can disable change tracking for the database. En el ejemplo siguiente se muestra cómo deshabilitar el seguimiento de cambios para una base de datos mediante ALTER DATABASE.The following example shows how to disable change tracking for a database by using ALTER DATABASE.

ALTER DATABASE AdventureWorks2012  
SET CHANGE_TRACKING = OFF  

En el siguiente ejemplo se muestra cómo deshabilitar el seguimiento de cambios para una tabla utilizando ALTER TABLE.The following example shows how to disable change tracking for a table by using ALTER TABLE.

ALTER TABLE Person.Contact  
DISABLE CHANGE_TRACKING;  

Consulte tambiénSee Also

Propiedades de la base de datos (página ChangeTracking) Database Properties (ChangeTracking Page)
Opciones de ALTER DATABASE SET (Transact-SQL) ALTER DATABASE SET Options (Transact-SQL)
sys.change_tracking_databases (Transact-SQL) sys.change_tracking_databases (Transact-SQL)
sys.change_tracking_tables (Transact-SQL) sys.change_tracking_tables (Transact-SQL)
Seguimiento de cambios de datos (SQL Server) Track Data Changes (SQL Server)
Acerca del seguimiento de cambios (SQL Server) About Change Tracking (SQL Server)
Trabajar con datos modificados (SQL Server) Work with Change Data (SQL Server)
Administrar el seguimiento de cambios (SQL Server)Manage Change Tracking (SQL Server)