Compartir a través de


Comprobaciones de coherencia del sistema de la tabla temporal

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL Database Azure SQL Managed Instance

Con las tablas temporales, el sistema realiza varias comprobaciones de coherencia para asegurarse de que el esquema cumple los requisitos de temporalidad y que los datos son y se mantienen coherentes. Además, las comprobaciones temporales están disponibles en la instrucción DBCC CHECKCONSTRAINTS.

Comprobaciones de coherencia del sistema

Antes de establecer SYSTEM_VERSIONING en ON, se llevan a cabo un conjunto de comprobaciones en la tabla de historial y en la tabla actual. Estas comprobaciones se agrupan en comprobaciones de esquema y de datos (si la tabla de historial no está vacía). Además, el sistema también realiza una comprobación de coherencia en tiempo de ejecución.

Comprobación de esquema

Al crear o modificar una tabla para convertirla en una tabla temporal, el sistema comprueba que se cumplan una serie de requisitos:

  1. El nombre y el número de columnas es el mismo en la tabla actual y en la tabla de historial.

  2. Los tipos de datos de cada columna coinciden entre la tabla actual y la tabla de historial.

  3. Las columnas de periodo se establecen en NOT NULL.

  4. La tabla actual tiene una restricción de clave principal, mientras que la tabla de historial no.

  5. En la tabla de historial no se definen columnas IDENTITY.

  6. En la tabla de historial no hay definidos desencadenadores.

  7. En la tabla de historial no hay definidas claves externas.

  8. En la tabla de historial no hay definidas restricciones de tabla o columna. Sin embargo, en la tabla de historial se permiten valores de columna predeterminados.

  9. La tabla de historial no está ubicada en un grupo de archivos de solo lectura.

  10. La tabla de historial no está configurada para el seguimiento de cambios ni la captura de datos modificados.

Comprobación de la coherencia de datos

Antes de que SYSTEM_VERSIONING se establezca en OON y como parte de cualquier operación de lenguaje de manipulación de datos (DML), el sistema realiza la comprobación siguiente: ValidTo >= ValidFrom

Al crear un vínculo a una tabla de historial existente, puede realizar una comprobación de coherencia de datos. La comprobación de coherencia de datos garantiza que los registros existentes no se superponen y que cada registro cumple los requisitos temporales. La comprobación de coherencia de datos se realiza de manera predeterminada. Debe realizar la comprobación de coherencia de datos siempre que los datos entre la tabla actual y la de historial puedan no estar sincronizados. Por ejemplo, cuando se incorpora una tabla de historial existente que se rellena con datos del historial.

Advertencia

Los cambios manuales del reloj del sistema provocarán errores inesperados del sistema, porque se produce un error en las comprobaciones de coherencia de datos en tiempo de ejecución para evitar condiciones de superposición (es decir, que la hora de finalización de un registro no sea anterior a su hora de inicio).

Uso de DBCC CHECKCONSTRAINTS

El comando DBCC CHECKCONSTRAINTS incluye comprobaciones de coherencia de datos temporales. Para más información, vea DBCC CHECKDB.