Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describe cómo administrar el seguimiento de cambios. También describe cómo configurar la seguridad y determinar los efectos en el almacenamiento y el rendimiento cuando se usa el seguimiento de cambios.
Administración del seguimiento de cambios
En las secciones siguientes se enumeran las vistas de catálogo, los permisos y la configuración pertinentes para administrar el seguimiento de cambios.
Vistas de catálogo
Para determinar qué tablas y bases de datos tienen habilitado el seguimiento de cambios, puede usar las siguientes vistas de catálogo:
Además, la vista de catálogo de sys.internal_tables enumera las tablas internas que se crean cuando el seguimiento de cambios está habilitado para una tabla de usuario.
Seguridad
Para acceder a la información de seguimiento de cambios mediante las funciones de seguimiento de cambios, el representante debe tener los siguientes permisos:
Permiso SELECT sobre al menos las columnas de clave primaria de la tabla que tiene seguimiento de cambios para la tabla que está siendo consultada.
Permiso para VER EL SEGUIMIENTO DE CAMBIOS en la tabla para la cual se obtienen los cambios. El permiso VIEW CHANGE TRACKING es necesario por las siguientes razones:
Los registros de seguimiento de cambios incluyen información sobre las filas que se han eliminado, específicamente los valores de clave principal de las filas que se han eliminado. A un principal se podría haber concedido el permiso SELECT para una tabla con seguimiento de cambios después de que algunos datos confidenciales hubieran sido eliminados. En este caso, no desearía que ese principal pudiera acceder a esa información eliminada mediante el seguimiento de cambios.
La información de seguimiento de cambios puede almacenar información sobre qué columnas han cambiado las operaciones de actualización. Podría denegarse el permiso a un director para una columna que contiene información confidencial. Sin embargo, dado que la información de seguimiento de cambios está disponible, un principal puede determinar que se ha actualizado un valor de columna, pero el principal no puede determinar el valor de la columna.
Comprender la sobrecarga de seguimiento de cambios
Cuando el seguimiento de cambios está habilitado para una tabla, algunas operaciones de administración se ven afectadas. En la tabla siguiente se enumeran las operaciones y los efectos que debe tener en cuenta.
| Operación | Cuando el seguimiento de cambios está habilitado |
|---|---|
| DROP TABLE (Eliminar tabla) | Se quita toda la información de seguimiento de cambios de la tabla eliminada. |
| ALTER TABLE ELIMINAR RESTRICCIÓN | Se producirá un error al intentar quitar la restricción PRIMARY KEY. El seguimiento de cambios debe deshabilitarse antes de que se pueda quitar una restricción PRIMARY KEY. |
| ALTERAR TABLA ELIMINAR COLUMNA | Si una columna que se quita forma parte de la clave principal, no se permite quitar la columna, independientemente del seguimiento de cambios. Si la columna que se quita no forma parte de la clave principal, la eliminación de la columna se realiza correctamente. Sin embargo, el efecto en cualquier aplicación que esté sincronizando estos datos debe entenderse primero. Si el seguimiento de cambios de columna está habilitado para la tabla, es posible que la columna quitada se devuelva como parte de la información de seguimiento de cambios. Es responsabilidad de la aplicación manejar la columna eliminada. |
| ALTERAR TABLA AÑADIR COLUMNA | Si se agrega una nueva columna a la tabla de seguimiento de cambios, no se realiza un seguimiento de la adición de la columna. Solo se realiza un seguimiento de las actualizaciones y los cambios realizados en la nueva columna. |
| ALTERAR TABLA ALTERAR COLUMNA | No se realiza un seguimiento de los cambios de tipo de datos de una columna de clave no principal. |
| ALTER TABLE SWITCH (Cambiar tabla) | Se produce un error al cambiar una partición si una o ambas tablas tienen habilitado el seguimiento de cambios. |
| DROP INDEX o ALTER INDEX DISABLE | El índice que exige la clave principal no se puede quitar ni deshabilitar. |
| TRUNCAR TABLA | El truncamiento de una tabla se puede realizar en una tabla que tenga habilitado el seguimiento de cambios. Sin embargo, no se realiza un seguimiento de las filas eliminadas por la operación y se actualiza la versión mínima válida. Cuando una aplicación comprueba su versión, la comprobación indica que la versión es demasiado antigua y se requiere una reinicialización. Esto equivale a deshabilitar el seguimiento de cambios y luego volver a habilitarlo para la tabla. |
El uso del seguimiento de cambios agrega cierta sobrecarga a las operaciones DML debido a la información de seguimiento de cambios que se almacena como parte de la operación.
Efectos en DML
El seguimiento de cambios se ha optimizado para minimizar la sobrecarga de rendimiento en las operaciones DML. La sobrecarga de rendimiento incremental asociada al uso del seguimiento de cambios en una tabla es similar a la sobrecarga que se produce cuando se crea un índice para una tabla y se debe mantener.
Para cada fila que cambia una operación DML, se agrega una fila a la tabla interna de seguimiento de cambios. El efecto de esto en relación con la operación DML depende de varios factores, como los siguientes:
Número de columnas de clave principal
Cantidad de datos que se están modificando en la fila de la tabla del usuario
Número de operaciones que se realizan en una transacción
El aislamiento de instantáneas, si se usa, también tiene un efecto en el rendimiento de todas las operaciones DML, independientemente de si el seguimiento de cambios está habilitado o no.
Efectos en el almacenamiento
Los datos de seguimiento de cambios se almacenan en los siguientes tipos de tablas internas:
Tabla de cambios interna
Hay una tabla de cambios interna para cada tabla de usuario que tiene habilitado el seguimiento de cambios.
Tabla de transacciones interna
Hay una tabla de transacciones interna para la base de datos.
Estas tablas internas afectan a los requisitos de almacenamiento de las maneras siguientes:
Para cada cambio en cada fila de la tabla de usuario, se agrega una fila a la tabla de cambios interna. Esta fila tiene una pequeña sobrecarga fija más una sobrecarga variable igual al tamaño de las columnas de clave principal. La fila puede contener información de contexto opcional establecida por una aplicación. Además, si el seguimiento de columnas está habilitado, cada columna modificada requiere 4 bytes en la tabla de seguimiento.
Para cada transacción confirmada, se agrega una fila a una tabla de transacciones interna.
Al igual que con otras tablas internas, puede determinar el espacio utilizado para las tablas de seguimiento de cambios mediante el procedimiento almacenado sp_spaceused . Los nombres de las tablas internas se pueden obtener mediante la vista de catálogo de sys.internal_tables , como se muestra en el ejemplo siguiente.
sp_spaceused 'sys.change_tracking_309576141'
sp_spaceused 'sys.syscommittab'
Véase también
Seguimiento de cambios de datos (SQL Server)
MODIFICAR TABLA (Transact-SQL)
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)