Vérifications de cohérence système des tables temporellesTemporal table system consistency checks

S’applique à :Applies to: ouiSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) et ultérieures OuiAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database OuiAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed InstanceS’applique à :Applies to: ouiSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) and later OuiAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database OuiAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance

Lorsque vous utilisez des tables temporelles, le système exécute un nombre de vérifications de cohérence pour s’assurer que le schéma est conforme aux exigences pour Temporal et que les données sont cohérentes et restent cohérentes.When using temporal tables, the system performs a number of consistency checks to ensure the schema complies with the requirements for temporal and the data is consistent, and remains consistent. En outre, les vérifications temporelles ont été ajoutées à l’instruction DBCC CHECKCONSTRAINTS .In addition, temporal checks have been added to the DBCC CHECKCONSTRAINTS statement.

Vérifications de cohérence systèmeSystem consistency checks

Avant que SYSTEM_VERSIONING soit défini sur ON, un ensemble de vérifications sont effectuées sur la table de l’historique et sur la table en cours.Before SYSTEM_VERSIONING is set to ON, a set of checks are performed on the history table and the current table. Ces vérifications sont regroupées en contrôles de schémas et contrôles de données (si la table de l’historique n’est pas vide).These checks are grouped into schema checks and data checks (if history table is not empty). En outre, le système effectue également une vérification de cohérence du runtime.In addition, the system also performs a runtime consistency check.

Contrôle du schémaSchema check

Lorsque vous créez ou modifiez une table en table temporelle, le système vérifie que les conditions sont remplies :When creating or alter a table to become a temporal table, the system verifies that requirements are met:

  1. Les noms et le nombre de colonnes est le même dans la table en cours et dans la table de l’historique.The names and number of columns is the same in both the current table and the history table.
  2. Les types de données correspondent pour chaque colonne entre la table en cours et la table de l’historique.The datatypes match for each column between the current table and the history table.
  3. Les colonnes de période sont définies sur NOT NULL.The period columns are set to NOT NULL.
  4. La table en cours comporte une contrainte de clé primaire, ce qui n’est pas le cas de la table de l’historique.The current table has a primary key constraint and the history table does not have a primary key constraint.
  5. Aucune colonne IDENTITY n’est définie dans la table de l’historique.No IDENTITY columns are defined in the history table.
  6. Aucun déclencheur n’est défini dans la table de l’historique.No triggers are defined in the history table.
  7. Aucune clé primaire n’est définie dans la table de l’historique.No foreign keys are defined in the history table.
  8. Aucune contrainte de table ou de colonne n’est définie sur la table de l’historique.No table or column constraints are defined on the history table. Toutefois, les valeurs de colonne par défaut sur la table de l’historique sont autorisées.However, default column values on the history table are permitted.
  9. La table de l’historique n’est pas placée dans un groupe de fichiers en lecture seule.The history table is not placed in a read-only filegroup.
  10. La table de l’historique n’est pas configurée pour le suivi des modifications ou la capture des modifications de données.The history table is not configured for change tracking or change data capture.

Vérification de la cohérence des donnéesData consistency check

Avant que SYSTEM_VERSIONING soit défini sur ON et dans le cadre d’une opération DML, le système effectue la vérification suivante : SysEndTimeSysStartTimeBefore SYSTEM_VERSIONING is set to ON and as part of any DML operation, the system performs the following check: SysEndTimeSysStartTime

Lorsque vous créez un lien vers une table de l’historique existante, vous pouvez choisir d’effectuer une vérification de cohérence des données.When creating a link to an existing history table, you can choose to perform a data consistency check. Cette vérification de cohérence des données garantit que les enregistrements existants ne se chevauchent pas et que les spécifications temporelles sont satisfaites pour chaque enregistrement individuel.This data consistency check ensures that existing records do not overlap and that temporal requirements are fulfilled for every individual record. La vérification de cohérence des données est effectuée par défaut.Performing the data consistency check is the default. En général, l’exécution de la vérification de cohérence des données est recommandée chaque fois que les données des tables en cours et des tables de l’historique risquent d’être désynchronisées, comme lorsque vous incorporez une table de l’historique existante remplie avec des données d’historique.Generally, performing the data consistency is recommended whenever the data between the current and history tables may be out of sync, such as when incorporating an existing history table that is populated with history data.

Avertissement

Les changements manuels de l’horloge système provoquent l’échec inattendu du système car les vérifications de cohérence des données du runtime mises en place pour éviter les conditions de chevauchement (c’est-à-dire que l’heure de fin d’un enregistrement ne doit pas être antérieure à l’heure de début) échouent.Manual changes to the system clock will cause the system to fail unexpectedly because the runtime data consistency checks that are in place to prevent overlap conditions (namely that the end time for a record is not less than its start time) will fail.

DBCC CHECKCONSTRAINTSDBCC CHECKCONSTRAINTS

La commande DBCC CHECKCONSTRAINTS inclut des vérifications de cohérence des données temporelles.The DBCC CHECKCONSTRAINTS command includes temporal data consistency checks. Pour plus d’informations, consultez DBCC CHECKCONSTRAINTS (Transact-SQL).For more information, see DBCC CHECKCONSTRAINTS (Transact-SQL).

Étapes suivantesNext steps