Comprobaciones de coherencia del sistema de la tabla temporal

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL DatabaseAzure 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, se han agregado comprobaciones temporales a 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 período 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 hay definida ninguna columna 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 ON y como parte de cualquier operación de 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. Por lo general, 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

Si se cambia manualmente la hora del reloj del sistema, el sistema fallará inesperadamente porque se producirá un error en las comprobaciones de coherencia de datos en tiempo de ejecución que se aplican 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).

DBCC CHECKCONSTRAINTS

El comando DBCC CHECKCONSTRAINTS incluye comprobaciones de coherencia de datos temporales. Para obtener más información, consulte DBCC CHECKCONSTRAINTS (Transact-SQL).

Pasos siguientes