2010-12-01 6 views
0

Comment puis-je enregistrer toutes les insertions et mises à jour effectuées sur une base de données (MS SQL Server 2005 et versions ultérieures)?Enregistrement de toutes les insertions et mises à jour du serveur Sql

Fondamentalement, je veux un tableau dans lequel je peux enregistrer tous les problèmes d'insertions et mises à jour sur ma base de données. Les déclencheurs seront difficiles à gérer car il y a des centaines de tables et de plus en plus.

Merci Haussier

Répondre

1

À partir de SQL Server 2008 et au-dessus, vous avez change data capture.

Triggers, bien que difficile à manier cauchemar et un entretien, fera le travail sur les versions antérieures à 2008.

+1

"Déclencheurs, bien que peu maniables et un cauchemar d'entretien" = déchets. – gbn

+0

@gbn, mes pensées exactement – HLGEM

2

Nous avons des centaines de tables et de plus en plus et utiliser des déclencheurs. Dans les versions plus récentes de SQL Server, vous pouvez utiliser Change Data Capture ou Change Tracking, mais nous ne les avons pas trouvées adéquates pour l'audit. Ce que nous avons est deux tables d'audit séparées pour chaque table (une pour enregistrer les détails de l'instance (1 ligne même si vous avez mis à jour un million d'enregistrements) et une pour enregistrer les anciennes et nouvelles valeurs réelles), mais chaque a la même structure et est créé en exécutant un processus SQL dynamique qui recherche les tables non vérifiées et crée les déclencheurs d'audit. Ce proc est exécuté chaque fois que nous déployons.

Ensuite, vous devriez également prendre le temps d'écrire un proc pour retirer les données des tables d'audit si vous voulez restaurer les anciennes valeurs. Cela peut être difficile d'écrire à la volée avec cette structure, il est donc préférable de l'avoir à portée de main avant que le PDG ne regarde votre cou pendant que vous restaurez les 50 000 utilisateurs accidentellement supprimés.

Questions connexes