Des suggestions pour implémenter des tables d'audit dans SQL Server?

Translate

Une méthode simple que j'ai utilisée dans le passé consiste essentiellement à créer une deuxième table dont la structure reflète celle que je souhaite auditer, puis à créer un déclencheur de mise à jour / suppression sur la table principale. Avant qu'un enregistrement ne soit mis à jour / supprimé, l'état actuel est sauvegardé dans la table d'audit via le déclencheur.

Bien qu'efficaces, les données du tableau d'audit ne sont pas les plus utiles ou les plus simples à signaler. Je me demande si quelqu'un a une meilleure méthode pour auditer les changements de données?

Il ne devrait pas y avoir trop de mises à jour de ces enregistrements, mais il s'agit d'informations très sensibles, il est donc important pour le client que tous les changements soient audités et facilement signalés.

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Combien d'écriture par rapport à la lecture de ce (s) tableau (s) attendez-vous?

J'ai utilisé une seule table d'audit, avec des colonnes pour Table, Column, OldValue, NewValue, User et ChangeDateTime - suffisamment générique pour fonctionner avec tout autre changement dans la base de données, et bien que BEAUCOUP de données soient écrites dans cette table, des rapports sur ces données étaient suffisamment rares pour pouvoir fonctionner à des périodes de faible utilisation de la journée.

Ajoutée:Si la quantité de données par rapport aux rapports est un problème, la table d'audit peut être répliquée sur un serveur de base de données en lecture seule, ce qui vous permet d'exécuter des rapports chaque fois que nécessaire sans empêcher le serveur maître de faire son travail.

La source
Translate

Nous utilisons deux tables pour cela.

Une table contient des données sur la transaction (base de données, nom de table, schéma, colonne, application qui a déclenché la transaction, nom d'hôte pour la connexion qui a commencé la transaction, date, nombre de lignes affectées et quelques autres).

La deuxième table est uniquement utilisée pour stocker les modifications de données afin que nous puissions annuler les modifications si nécessaire et rendre compte des anciennes / nouvelles valeurs.

Une autre option consiste à utiliser un outil tiers pour cela, tel queAudit ApexSQLou Modifier la fonctionnalité de capture de données dans SQL Server.

La source
Translate

J'ai trouvé ces deux liens utiles:

Utilisation du CLR et d'une table d'audit unique.
Création d'un déclencheur d'audit générique avec SQL 2005 CLR

Utilisation de déclencheurs et d'une table d'audit distincte pour chaque table en cours d'audit.
Comment auditer les modifications apportées aux données SQL Server?

La source
Translate

Existe-t-il des packages d'audit intégrés? Oracle a un bon package, qui enverra même les modifications d'audit à un serveur séparé en dehors de l'accès de tout méchant qui modifie le SQL.

Leur exemple est génial ... il montre comment alerter toute personne modifiant les tables d'audit.

La source
Translate

OmniAuditpourrait être une bonne solution pour vous. Je ne l'ai jamais utilisé auparavant parce que je suis assez heureux d'écrire mes propres routines d'audit, mais cela sonne bien.

La source
Translate

J'utilise l'approche décrite par Greg dans sonrépondreet remplissez la table d'audit avec une procédure stockée appelée à partir des déclencheurs de table.

La source