L'audit des modifications de données dans SQL Server 2008
Je suis en train d'essayer de trouver une méthode très efficace de l'audit des modifications de données dans une table. Actuellement, je suis en utilisant un déclencheur qui regarde les tables INSERTED et DELETED pour voir ce que les lignes ont changé et insère ces modifications dans une table d'Audit.
Le problème est que ce se révèle être très inefficace (évidemment!). Il est possible que, avec 3 mille lignes insérées dans la base de données à la fois (ce qui ne serait pas surprenant) que 215000 lignes devrait être ajoutée au total de la vérification de ces lignes.
Ce qui est une façon raisonnable de la vérification de toutes les données sans que cela prend beaucoup de temps à insérer dans la base de données? Il doit être rapide!
Grâce.
- Bien que je vous ai offert une réponse ci-dessous, juste par curiosité, comment puis-3000 insère créer 215000 vérification des lignes? C'est plus de 70 enregistrements d'audit par ligne!
- Parce que pour chaque colonne d'une ligne est insérée dans la table d'audit montrant les anciennes et les nouvelles valeurs.
Vous devez vous connecter pour publier un commentaire.
Correctement écrite de déclenchement devrait être assez rapide.
Vous pouvez consulter également La Capture De Données Modifiées
J'ai assez souvent l'utilisation AutoAudit:
Mise à jour: (Original edit a été rejetée, mais je suis re-ajouter):
Une mise à jour majeure de la version 3.20 a été publié en novembre 2013 avec ces caractéristiques ajoutées:
Poignées de tables avec jusqu'à 5 PK colonnes
Des améliorations de rendement jusqu'à 90% plus rapide que la version 2.00
Amélioré historique de la récupération des données de l'UDF,
Poignées de colonne ou de table des noms qui ont besoin de quotename [ ]
Archives processus pour suivre le live de la Vérification des tables plus petites, plus rapide, mais de conserver les anciennes données dans les archives AutoAudit tables
select * from Audit.AuditAllExclusions select * from Audit.AuditBaseTables select * from Audit.AuditDetail select * from Audit.AuditDetailArchive select * from Audit.AuditHeader select * from Audit.AuditHeaderArchive select * from Audit.AuditSettings select * from Audit.SchemaAudit
ensuite, il ne veut pas me montrer que les valeurs sont insrted dans test1 tableComme d'autres déjà dit - vous pouvez utiliser la Capture de Données modifiées, la Modification de Suivi et de Vérification des fonctionnalités de SQL Server, mais pour faire simple et utiliser une solution de suivi de toutes les SQL Server activités, y compris ces opérations DML je vous propose d'essayer ApexSQL Respecter. Vous pouvez désactiver tous les autres, et de laisser DML audit option seulement
Il utilise un référentiel centralisé pour saisir des renseignements sur plusieurs instances de SQL Server et de leurs bases de données.
Il serait préférable de lire cet article tout d'abord, et ensuite décider sur l'utilisation de cet outil:
http://solutioncenter.apexsql.com/methods-for-auditing-sql-server-data-changes-part-9-the-apexsql-solution/
SQL Server Notifications sur insert update delete table de changer
SqlTableDependency C# composante fournit le faible niveau de mise en œuvre de recevoir de la base de données de la notification de la création de SQL Server File d'attente et le Service d'un Courtier.
Ont un coup d'oeil à http://www.sqltabledependency.it/
Pour n'importe quel enregistrement modifier, SqlTableDependency du gestionnaire d'événement recevra une notification contenant modifié le tableau des valeurs d'enregistrement ainsi que DML - insert, update, delete - changement exécuté sur votre table de base de données.
Vous pouvez permettre à la table d'audit interne en ajoutant des colonnes, par exemple:
Pour un INSERT, c'est un nouveau record et c'est l'existence dans le tableau est l'audit en lui-même.
Avec une SUPPRESSION - vous pouvez ajouter des colonnes, comme
IsDeleted BIT \ DeletingUserID INT \ DeletingTimestamp DATETIME
à votre table.Avec une mise à JOUR vous ajoutez des colonnes comme
IsLatestVersion BIT \ ParentRecordID INT
pour suivre les changements de version.