2009-08-06 8 views
0

J'ai joué avec l'idée d'une table d'audit unique pour quelques tables dans ma base de données. J'ai trouvé le code sur cette page:Interrogation d'une table d'audit unique pour la création de rapports

J'aime l'idée, mais la seule chose que je suis un peu perplexe est comment vous interroger l'information afin qu'elle puisse être montrée d'une manière utile.

Après avoir effectué quelques changements de la table de vérification ressemble à ceci: alt text

La plupart du temps pour faire de l'histoire, je voudrais juste faire une copie de la table et ajouter une date colonne modifiée jusqu'à la fin puis Il suffit de copier la ligne entière dans la table d'historique, mais cela crée beaucoup de données copiées et beaucoup de tables d'historique si vous avez beaucoup de choses à auditer.

Répondre

2

Je dois dire que je pense que ce modèle d'audit est un cauchemar. Et je pense que tu as trébuché sur pourquoi. Il est très, très difficile de reproduire les données car il utilisait ce schéma, pas la moindre des raisons est que vous n'avez pas le type de données de ce qui est en train d'être changé. Et même si vous le faisiez, vous pourriez très bien perdre la précision dans la conversion entre une chaîne et votre type de données natif. Non, je pense que votre idée originale est bien meilleure: simplement couper les lignes de la table. La plupart du temps, vous n'avez pas à vous soucier de l'espace supplémentaire consommé. L'espace est bon marché comparé au compromis que vous faites en réduisant les changements par colonne. De plus, gardez à l'esprit que le schéma décrit dans cet article ne permet même pas de gagner de la place pour des tables très étroites! En fait, il pourrait être plus grand que celui de l'audit de ligne.

+0

Je suppose que cela dépend de la façon dont vous allez utiliser vos données d'audit. Par exemple, imaginez que vous avez un employé avec 50 tables connexes. Si un utilisateur veut voir tout ce qui a changé pour un employé depuis une date donnée, interroger 50 tables coupées serait un cauchemar. Cependant, ce serait trivial avec une seule table. Cependant, si vous avez besoin de restaurer automatiquement les données auditées, au lieu de simplement les signaler, je serais entièrement d'accord avec vous. –

5

Une solution alternative à ce "cauchemar" (le commentaire aimé de Dave) est l'utilisation de deux tables d'audit peuplées de déclencheurs d'audit. Vous pouvez évaluer le 3rd party solution qui crée à la fois des déclencheurs et des tables d'audit via l'interface graphique, puis examinez son fonctionnement.

Dislaimer: Je travaille comme ingénieur de support produit au ApexSQL

Questions connexes