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.
Se aplica a:SQL Server
Azure SQL Database
Instancia
administrada de Azure SQLBase de datos SQL en Microsoft Fabric
En este artículo se describe cómo administrar el seguimiento de cambios. También se describe cómo configurar la seguridad y determinar los efectos en el almacenamiento y el rendimiento cuando se utiliza el seguimiento de cambios.
Administrar el seguimiento de cambios
En las secciones siguientes se enumeran las vistas de catálogo, los permisos y los valores de configuración que son importantes para la administración del seguimiento de cambios.
Vistas de catálogo
Para determinar qué tablas y bases de datos tienen habilitado el seguimiento de cambios, use las siguientes vistas de catálogo:
También, la vista de catálogo sys.internal_tables genera una lista de las tablas internas que se crean al habilitar el seguimiento de cambios para una tabla de usuario.
Seguridad
Para acceder a la información de seguimiento de cambios mediante las funciones de seguimiento de cambios, la entidad de seguridad debe contar con los siguientes permisos:
SELECTpermiso en al menos las columnas de clave principal de la tabla de seguimiento de cambios a la tabla que se está consultando.VIEW CHANGE TRACKINGautorización en la tabla en la cual se obtienen los cambios. ElVIEW CHANGE TRACKINGpermiso es necesario por los siguientes motivos:Los registros de seguimiento de cambios incluyen información sobre las filas que se eliminan. Los registros usan los valores de clave primaria de las filas eliminadas. Se le puede conceder a una entidad de seguridad el permiso
SELECTpara una tabla con seguimiento de cambios después de que se eliminen algunos datos confidenciales. En este caso, no desea que esa entidad de seguridad acceda a la información eliminada mediante el seguimiento de cambios.La información de seguimiento de cambios puede almacenar información sobre qué columnas se modifican mediante las operaciones de actualización. Es posible que se deniegue a una entidad de seguridad el permiso para acceder a una columna que contiene información confidencial. Sin embargo, dado que la información de seguimiento de cambios está disponible, una entidad de seguridad puede determinar que se actualiza un valor de columna, pero la entidad de seguridad no puede determinar el valor de la columna.
Comprender la sobrecarga del seguimiento de cambios
Al habilitar el seguimiento de cambios para una tabla, afecta a algunas operaciones de administración. En la tabla siguiente se enumeran las operaciones y los efectos que se deben considerar.
| Operación | Cuando el seguimiento de cambios está habilitado |
|---|---|
DROP TABLE |
Se elimina toda la información de seguimiento de cambios de la tabla eliminada. |
ALTER TABLE DROP CONSTRAINT |
Se produce un error al intentar quitar la PRIMARY KEY restricción. Debe deshabilitar el seguimiento de cambios para poder quitar una PRIMARY KEY restricción. |
ALTER TABLE DROP COLUMN |
Si una columna que va a quitar forma parte de la clave principal, no se permite quitar la columna, independientemente del seguimiento de cambios. Si la columna que va a eliminar no forma parte de la clave primaria, la eliminación de la columna se realiza correctamente. Sin embargo, primero debe comprender el efecto en cualquier aplicación que sincronice estos datos. Si el seguimiento de cambios de la columna está habilitado para la tabla, es posible que la columna quitada siga formando parte de la información del seguimiento de cambios obtenida. Es responsabilidad de la aplicación gestionar la columna eliminada. |
ALTER TABLE ADD COLUMN |
Si agrega una nueva columna a la tabla de seguimiento de cambios, no se realiza el seguimiento de la adición de la columna. Solo se realiza el seguimiento de las actualizaciones y los cambios que se efectúen en la columna nueva. |
ALTER TABLE ALTER COLUMN |
No se realiza un seguimiento de los cambios de tipo de datos de una columna de clave no principal. |
ALTER TABLE SWITCH |
Se produce un error al cambiar una partición si una o ambas tablas tienen habilitado el seguimiento de cambios. |
DROP INDEX, or ALTER INDEX DISABLE |
El índice que exige la clave principal no se puede quitar ni deshabilitar. |
TRUNCATE TABLE |
Puede truncar una tabla que tenga habilitado el seguimiento de cambios. Sin embargo, no se rastrean las filas que elimina 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. Esta condición equivale a deshabilitar el seguimiento de cambios y, a continuación, volver a habilitarlo para la tabla. |
El uso del seguimiento de cambios agrega cierta sobrecarga a las operaciones DML porque la operación almacena información de seguimiento de cambios.
Efectos en DML
El seguimiento de cambios está optimizado para minimizar la sobrecarga de rendimiento en las operaciones DML. La sobrecarga incremental de rendimiento que conlleva usar el seguimiento de cambios en una tabla es similar a la sobrecarga que se produce al crear y mantener un índice de una tabla.
Para cada fila que cambia una operación DML, el sistema agrega una fila a la tabla interna de seguimiento de cambios. El efecto de esta acción, en relación con la operación DML, depende de varios factores, como:
El número de columnas de clave principal
Cantidad de datos modificados en la fila de la tabla de usuario
Número de operaciones realizadas en una transacción
El aislamiento de instantáneas, si se usa, también afecta al rendimiento de todas las operaciones DML, independientemente de si el seguimiento de cambios está habilitado o no.
Efectos en el almacenamiento
Los datos del seguimiento de cambios se almacenan en los tipos siguientes de tablas internas:
Tabla de cambios interna
Cada tabla de usuario que tiene habilitado el seguimiento de cambios obtiene su propia tabla de cambios interna.
Tabla de transacciones interna
La base de datos tiene una tabla de transacciones interna.
Estas tablas internas afectan a los requisitos de almacenamiento de las maneras siguientes:
Para cada cambio en cada fila de la tabla de usuario, el seguimiento de cambios agrega una fila a la tabla de cambios interna. Esta fila tiene una pequeña sobrecarga fija más una sobrecarga variable equivalente al tamaño de las columnas de clave principal. La fila puede contener información de contexto opcional establecida por una aplicación. Si habilita el seguimiento de columnas, cada columna modificada requiere 4 bytes en la tabla de seguimiento.
Para cada transacción confirmada, el seguimiento de cambios agrega una fila a una tabla de transacciones interna.
Como en el caso de otras tablas internas, es posible determinar el espacio usado para las tablas de seguimiento de cambios a través del procedimiento almacenado sp_spaceused . Puede obtener los nombres de las tablas internas 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'
Contenido relacionado
- Seguimiento de los cambios de datos (SQL Server)
- ALTER TABLE (Transact-SQL)
- Propiedades de la base de datos (página ChangeTracking)
- ALTER DATABASE SET options (Transact-SQL)
- sys.change_tracking_databases (Transact-SQL)
- sys.change_tracking_tables (Transact-SQL)
- Acerca del seguimiento de cambios (SQL Server)
- Trabajar con datos modificados