Enregistrement de l'historique des modifications dans un champ XML dans SQL Server 2008

StackOverflow https://stackoverflow.com/questions/604229

  •  03-07-2019
  •  | 
  •  

Question

J'ai travaillé sur plusieurs applications permettant de sauvegarder des données XML dans une base de données. Pour les dater tous, il suffit de remplacer le contenu XML actuel par le nouveau contenu XML.

Je souhaite enregistrer les modifications apportées au XML dans la base de données, sans toutefois écraser ce qui se trouve actuellement dans la base de données.

À part la création de nouvelles lignes pour les modifications tout en laissant les anciennes lignes intactes, quelles autres options puis-je utiliser?

J'ai envisagé de ne conserver que les différences sous forme de différences de texte réelles, ce qui ne fonctionne pas toujours pour XML.

Suis-je fou pour le vouloir?

Était-ce utile?

La solution

Vous pouvez envisager d'ajouter une table d'audit à côté de votre table de données.

Il ne contient que les colonnes pour lesquelles vous souhaitez suivre l'historique, ainsi qu'une colonne datetime (pour enregistrer la date de modification) et, normalement, vous souhaitez également obtenir certaines informations utilisateur (par exemple, extraire l'utilisateur connecté de la connexion ou indiquez un nom d'utilisateur dans votre insertion / mise à jour).

Créez ensuite un déclencheur de mise à jour sur votre table de données et insérez de nouvelles lignes dans votre table d'audit à partir de la pseudo-table supprimée. Cela contiendra les données avant une mise à jour si vous effectuez une mise à jour puisqu’une mise à jour est vraiment une suppression et une insertion.

Il existe également cette solution à usage plus général qui propose d'utiliser SQL CLR pour résumer de manière abstraite l'implémentation d'une table d'audit unique et d'un déclencheur pour chaque table de données que vous souhaitez auditer: http://www.sqljunkies.ddj.com/Article/4CD01686-5178-490C-A90A-5AEEF5E35915.scuk

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top