Vérifications de cohérence système des tables temporelles
S’applique à : SQL Server 2016 (13.x) et versions ultérieures Base de données Azure SQL Azure 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, les vérifications temporelles sont disponibles dans 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 :
Les noms et le nombre de colonnes est le même dans la table en cours et dans la table de l’historique.
Les types de données correspondent pour chaque colonne entre la table en cours et la table de l’historique.
Les colonnes de période sont définies sur
NOT NULL
.La table en cours a une contrainte de clé primaire, et la table d’historique n’a pas de contrainte de clé primaire.
Aucune colonne
IDENTITY
n’est définie dans la table de l’historique.Aucun déclencheur n’est défini dans la table de l’historique.
Aucune clé primaire n’est définie dans la table de l’historique.
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.
La table d’historique n’est pas placée dans un groupe de fichiers en lecture seule.
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 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. 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 modifications manuelles de l'horloge système entraîneront une défaillance inattendue du système, car les contrôles de cohérence des données en cours d'exécution visant à éviter les conditions de chevauchement (à savoir que l'heure de fin d'un enregistrement n'est pas inférieure à l'heure de début) échouent.
Utilisez DBCC CHECKCONSTRAINTS
La commande DBCC CHECKCONSTRAINTS
inclut des vérifications de cohérence des données temporelles. Pour plus d’informations, consultez DBCC CHECKCONSTRAINTS.
Contenu connexe
- Tables temporelles
- Bien démarrer avec les tables temporelles avec versions gérées par le système
- Partition avec des tables temporelles
- Considérations et limitations liées aux tables temporelles
- Sécurité de la table temporelle
- Gérer la rétention des données d'historique dans les tables temporelles avec contrôle de version par le système
- Tables temporelles avec version gérée par le système avec tables à mémoire optimisée
- Vues et fonctions des métadonnées des tables temporelles