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 Instance

Avec des tables temporelles, le système exécute plusieurs vérifications de cohérence pour vérifier que le schéma est conforme aux exigences pour les aspects temporels, que les données sont cohérentes et qu’elles le restent. En outre, des vérifications temporelles ont été ajoutées à l’instruction DBCC CHECKCONSTRAINTS.

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 sont regroupées en vérifications du schéma et en vérifications des données (si la table d’historique n’est pas vide). En outre, le système effectue également une vérification de cohérence du runtime.

Contrôle du schéma

Lorsque vous créez ou modifiez une table en table temporelle, le système vérifie que les conditions sont remplies :

  1. Les noms et le nombre de colonnes est le même dans la table en cours et dans la table de l’historique.
  2. Les types de données correspondent pour chaque colonne entre la table en cours et la table de l’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é primaire n’est définie dans la table de l’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 DML, le système effectue la vérification suivante : ValidTo >= ValidFrom

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. 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. La vérification de cohérence des données est effectuée par défaut. En général, vous devez effectuer la vérification de cohérence des données chaque fois que les données des tables actuelles et des tables d’historique risquent d’être désynchronisées, comme quand vous incorporez une table d’historique existante remplie avec des données d’historique.

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.

DBCC CHECKCONSTRAINTS

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

Étapes suivantes