SQL Server Change Data Capture est une fonctionnalité qui lit les données historiques des journaux de transactions SQL Server et les stocke dans une table spéciale.
Grâce à l'utilisation de fonctions de valeur de table spéciales (TVF), il permet ensuite à l'utilisateur d'interroger ces données, ce qui permet soit d'obtenir toutes les modifications sur une table spécifique, soit uniquement les modifications nettes résultant des modifications dans un délai spécifique.
CDC a certains avantages
- Il peut être configuré pour suivre uniquement certaines tables ou colonnes.
- Il est capable de gérer les changements de modèle dans une certaine mesure.
- Il n'affecte pas les performances aussi fortement que les déclencheurs car il fonctionne avec les journaux de transactions.
- Il est facilement activé / désactivé et ne nécessite pas de colonnes supplémentaires sur la table qui doivent être suivies.
Il présente également certains inconvénients:
- La quantité de données d'historique peut devenir très rapide.
- Vous n'êtes pas en mesure de suivre qui a effectué les modifications (du moins pas pour les suppressions).
- Les données d'historique prennent un certain temps à rattraper, car elles sont basées sur les journaux de transactions.
- Cela dépend de l'Agent SQL Server. Si l'agent n'est pas en cours d'exécution ou se bloque, aucun historique n'est suivi.
J'ai beaucoup lu sur CDC et même si je sais maintenant comment l'utiliser, je ne sais toujours pas si c'est le bon outil pour moi.
- Pour quelles tâches / scénarios le CDC est-il le bon outil? (par exemple, permettre aux utilisateurs de restaurer un objet de données à un certain moment? Audit? Affichage de l'historique complet des données?)
- Quand devriez-vous plutôt ne pas utiliser CDC, mais recourir à une solution basée sur un déclencheur personnalisé?
- Est-il acceptable d'utiliser CDC dans une base de données opérationnelle et d'utiliser les données CDC dans une application opérationnelle? (par exemple, le montrer à l'utilisateur final) Ou est-ce clairement une mauvaise utilisation de cette fonctionnalité?
J'entends souvent que CDC est un outil d'audit, mais n'est-ce pas à cela que sert SQL Server Audit ? S'agit-il de deux outils différents pour la même tâche? Ou le CDC peut-il être utilisé à d'autres fins?
Mon scénario actuel est que l'on me demande de construire un cadre de données fiable qui est censé être la base de plusieurs applications futures. Les exigences exactes sont floues, mais la première est qu'il devrait être en mesure de suivre l'historique des données et de restaurer les entrées plus anciennes ainsi que toutes les données associées d'autres tables. J'évalue actuellement le CDC en option, mais je ne sais pas si c'est la voie à suivre, car je ne trouve pas vraiment de cas d'utilisation recommandés.
Bien que j'apprécie les conseils pour mon scénario spécifique, les réponses devraient donner des conseils généraux sur le moment ou le moment de ne pas utiliser Change Data Capture.