Pendant longtemps, nous avons voulu créer un système de gestion de cas où aucun historique n'est jamais perdu. Quand un changement est fait, nous voulons enregistrer ce changement, mais avoir la possibilité de revenir à n'importe quel moment et de voir à quoi ressemblait l'enregistrement. Je voulais poser cette question à la communauté Stack Overflow pour voir quelles sont les façons de le faire, y a-t-il déjà une technologie en place pour y parvenir?Méthodes de gestion de l'historique des données dans la base de données SQL Server 2008
Répondre
Oui, cette technologie existe vraiment - c'est un peu un effort pour l'implémenter et le faire correctement.
Qu'est-ce que vous cherchez est appelée bases de données temporelles - voir quelques ressources:
Je ne suis pas sûr comment une base de données temporelle comme marc_s mentionné les travaux, mais si vous utilisez SQL Server 2008 ou version ultérieure, vous pouvez profiter de son intégré Change Data Capture (CDC) fonctionnalité:
- Change Data Capture (MSDN)
- Basics of Change Data Capture (MSDN)
- Using Change Data Capture
- Sql Server 2008: Change Data Capture (CDC)
Activation CDC utilise le journal des transactions de réplication pour stocker les insertions, les mises à jour et supprime un table et crée des fonctions de table qui vous permettent d'extraire les lignes à une date/heure donnée, ou de récupérer uniquement les modifications. Vous ne pouvez pas compter uniquement sur CDC, car votre journal des transactions deviendra ingérable et lent. Alors ce que vous faites est:
- activer CDC,
- créer une table d'historique en utilisant le même schéma que la table d'origine, mais en ajoutant deux autres colonnes pour stocker des informations de version de ligne (comme une slowly-changing dimension dans un relationnel base de données OLAP) et
- créer une tâche qui sera interroge périodiquement les fonctions CDC pour les changements depuis sa dernière charge et les pousse à la table d'historique
ensuite, vous pouvez ensuite utiliser la table d'historique dans vos requêtes, se joindre à comme vous le feriez normalement, mais avec un ou plusieurs prédicat (s) supplémentaire (s) pour obtenir l'enregistrement "en-de" n'importe quelle date.
- 1. Insertion rapide des tables de données relationnelles (normalisées) dans la base de données SQL Server 2008
- 2. Sauvegarde de base de données dans SQL Server 2008
- 3. SQL Server 2008 base de données de conversion de Collation
- 4. Entreposage de données dans SQL Server 2008
- 5. Base de données SQL Server 2008 drop, create et fill
- 6. Comment faire pour synchroniser la base de données SQL Server 2008 avec la base de données SQL Server 2005?
- 7. Transférer/Transformer des données de la base de données SQL Server 2008 vers une autre
- 8. Importation de la base de données Sql Server 2005 dans Sql Server express 2008
- 9. Remplacer la base de données SQL Server
- 10. Gestion des données de hiérarchie dans la base de données
- 11. Problème de base de données SQL Server 2008
- 12. Récupération de base de données SQL Server
- 13. Comment puis-je migrer la base de données de SQL Server 2008 vers SQL Server 2000
- 14. SQL Server 2008 - Interrogation de données spatiales
- 15. ssis SQL Server 2008 pour l'accès. Base de données mdb
- 16. Protection des données SQL Server 2008
- 17. Transférer la base de données de SQL Server 2005 vers SQL Server 2008
- 18. Dynamiquement créer la base de données dans SQL Server Express
- 19. sql server Restaurer la base de données
- 20. Serveur SQL 2008 Bas de la base de données r2
- 21. Optimisation de la base de données SQL Server pour une base de données volumineuse
- 22. Séparation d'une base de données SQL Server
- 23. Gestion de base de données
- 24. Schémas de base de données SQL Server
- 25. Déterminez la taille de la base de données SQL Server
- 26. Projet 'SQL Server 2008 Server' de Visual Studio par rapport à 'Projet de base de données Sql Server 2008'?
- 27. Codage couleur des bases de données SQL Server 2008
- 28. Rôle de rôle dans la base de données SQL Server?
- 29. Sauvegarde de la base de données SQL Server avec progression
- 30. Types de données SQL Server 2008
Cela ressemble à beaucoup de couches supplémentaires pour quelque chose qu'un déclencheur pourrait faire pour remplir cette même table d'histoire que vous avez mentionnée. – Chris
Ceci est vrai; Cependant, en fonction du nombre de colonnes, cela peut nécessiter beaucoup de déclencheurs. D'une manière ou d'une autre, les scripts peuvent être programmés, la complexité ne devrait donc pas poser trop de problèmes. Les deux méthodes ont leurs avantages et leurs inconvénients, et quelle est la bonne façon dépend de vos besoins. Voici une bonne discussion: http: // sqlserverplanet.com/design/triggers-service-broker-cdc-or-change-tracking/ – utexaspunk
J'utilise des tables séparées + Triggers pour gérer l'historique des enregistrements et deux autres tables pour enregistrer quand et qui a fait les changements dans quel enregistrement. +1 aux déclencheurs! – Achilles