Vérifications de cohérence système des tables temporelles

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Avec les tables temporelles, le système effectue plusieurs vérifications de cohérence. Ces vérifications garantissent que le schéma respecte les exigences temporelles et que les données sont cohérentes et restent cohérentes. L’énoncé DBCC CHECKCONSTRAINTS fournit également des vérifications temporelles.

Vérifications de cohérence système

Avant que SYSTEM_VERSIONING soit défini sur ON, un ensemble de vérifications sont effectuées sur la table d’historique et sur la table actuelle. Ces vérifications relèvent des vérifications de schéma et des vérifications de données (si la table d’historique n’est pas vide). Le système effectue également une vérification de cohérence à l’exécution.

Vérification du schéma

Lorsque vous créez ou modifiez une table pour en faire une table temporelle, le système vérifie que ces exigences sont remplies :

  1. Les noms et le nombre de colonnes sont identiques à la fois dans le tableau actuel et dans le tableau historique.

  2. Les types de données correspondent pour chaque colonne entre la table actuelle et la table historique.

  3. Les colonnes de période sont définies sur NOT NULL.

  4. La table en cours a une contrainte de clé primaire, et la table d’historique n’a pas de contrainte de clé primaire.

  5. Aucune colonne IDENTITY n’est définie dans la table de l’historique.

  6. Aucun déclencheur n’est défini dans la table de l’historique.

  7. Aucune clé étrangère n’est définie dans la table d’historique.

  8. Aucune contrainte de table ou de colonne n’est définie sur la table de l’historique. Toutefois, les valeurs de colonne par défaut sur la table de l’historique sont autorisées.

  9. La table d’historique n’est pas placée dans un groupe de fichiers en lecture seule.

  10. La table d’historique n’est pas configurée pour le suivi des modifications ou la capture des modifications de données.

Vérification de la cohérence des données

Avant que SYSTEM_VERSIONING soit défini sur ON et dans le cadre d’une opération de langage de manipulation de données (DML), le système effectue la vérification suivante : ValidTo >= ValidFrom

Lorsque vous créez un lien vers une table d’historique existante, vous pouvez choisir de faire une vérification de cohérence des données. Cette vérification de cohérence des données garantit que les enregistrements existants ne se chevauchent pas et que chaque enregistrement répond aux exigences temporelles. Le contrôle de cohérence des données s’exécute par défaut. Effectuez la vérification de cohérence des données chaque fois que les données entre les tables actuelle et historique peuvent être désynchronisées. Par exemple, réalisez-le lorsque vous incorporez une table d’historique existante qui contient déjà des données d’historique.

Avertissement

Des modifications manuelles de l’horloge du système provoquent une défaillance inattendue du système, car les vérifications de cohérence des données à l’exécution qui empêchent les conditions de chevauchement (à savoir que l’heure de fin d’un enregistrement n’est pas inférieure à son heure de début) échouent.

Utilisation de DBCC CHECKCONSTRAINTS

La commande DBCC CHECKCONSTRAINTS inclut des vérifications de cohérence des données temporelles. Pour plus d’informations, consultez DBCC CHECKCONSTRAINTS.