Comment puis-je savoir quelle application ou SP modifie les valeurs dans une table de configuration? Je pensais que j'avais isolé l'application qui était responsable, mais ces valeurs particulières reviennent à la vérité quand je continue à les modifier pour être faux.Regarder une colonne de base de données pour déterminer ce qui modifie
Répondre
Tout d'abord, créer une table d'enregistrement:
CREATE TABLE modlog(
datestamp smalldatetime,
username varchar(255) NOT NULL DEFAULT SYSTEM_USER
);
Ensuite, créez un déclencheur UPDATE sur votre table:
CREATE TRIGGER mytable_mods ON mytable FOR UPDATE AS
INSERT INTO modlog(smalldatetime) VALUES (GETDATE());
Il suffit de jeter un regard dans la table de modlog pour savoir quel utilisateur est mise à jour de la table, et quand. Vous pourriez avoir envie et aussi enregistrer des champs particuliers en cours de mise à jour. Une autre approche consisterait à configurer une trace dans SQL Server Profiler, filtrer le diable afin qu'il ne renvoie que des mises à jour sur cette table, et le garder ouvert jusqu'à ce que quelque chose se passe.
Si vos applications comprennent le NomApplication paramètre dans leurs chaînes de connexion, vous pouvez utiliser app_name() au lieu de SYSTEM_USER, qui enregistrera le nom de l'application, la suppression du travail de détective supplémentaire. Connaître l'utilisateur peut toujours être utile afin que vous puissiez comprendre ce qu'ils font pour déclencher la mise à jour.
Créez un déclencheur pour annuler la mise à jour. Attendez que l'application à l'erreur. Il peut être un déclencheur très simple:
CREATE TRIGGER BugOffRogueProgram
ON MyConfigTable
FOR UPDATE
AS
BEGIN
ROLLBACK TRAN
END
Les réponses fournies jusqu'à présent sont tout à fait sur place - c'est la façon de le faire dans SQL Server 2005.
Tout comme un bref teaser : dans SQL Server 2008, une nouvelle fonctionnalité appelée Change Data Capture prend en charge ce scénario exact "prêt à l'emploi" sans qu'il soit nécessaire d'écrire des déclencheurs et de mettre à jour les tables vous-même. Assez pratique!
Marc
- 1. Comment rechercher une colonne de base de données qui autorise le balisage?
- 2. Comment indexer une colonne de base de données
- 3. inet_ntoa sur toute une colonne d'une base de données
- 4. Pour définir une valeur par défaut pour une colonne dans une base de données par PostgreSQL
- 5. Recommandations pour la base de données orientée colonne
- 6. Colonne endommagée dans la base de données
- 7. Comment puis-je regarder les métadonnées de colonne dans Sybase?
- 8. Comment faire pour supprimer les espaces de fin dans une colonne de base de données?
- 9. Qu'est-ce qu'une unité de travail en ce qui concerne les objets de base de données?
- 10. Générique pour déterminer si une colonne existe dans ADO.NET
- 11. Hibernate invalidation de cache de second niveau lorsqu'un autre processus modifie la base de données
- 12. Comment déterminer un type de colonne de base de données de manière agnostique à l'aide de DbConnection.GetSchema?
- 13. Déterminer le chemin du fichier de la base de données
- 14. Comment déterminer le type de base de données pour une connexion JDBC donnée?
- 15. Mise à niveau d'une table de base de données pour ajouter une nouvelle colonne
- 16. Existe-t-il une meilleure pratique pour la commande de colonne de base de données?
- 17. Comment indiquer à C# de regarder dans la classe de base d'un objet pour une propriété?
- 18. DB2 - Modifie les données SQL
- 19. Table de base de données ADO Colonne booléenne
- 20. Qu'est-ce qui cause l'erreur 4063 - Base de données ... nom de base de données ... n'a pas encore été ouvert
- 21. Regarder une page Web pour les changements
- 22. Une base de données pour python 3?
- 23. Qu'est-ce qu'une «base de données omniprésente»?
- 24. Quelle est la meilleure colonne pour stocker du XML dans une base de données Oracle?
- 25. MySQL select qui retourne une colonne fictive?
- 26. Comment ajouter une colonne dans une table de base de données sqlite 2
- 27. Trouver une colonne spécifique dans une table inconnue dans une base de données?
- 28. qu'est ce que qdb? base de données
- 29. Instruction de sélection SQL qui affiche une colonne inexistante?
- 30. Quelles sont les tailles de colonne de base de données recommandées pour les noms?
Will qui identifient le nom d'utilisateur? –
@richard, si vous pouvez corréler le nom d'utilisateur avec une application spécifique, cela devrait fonctionner. –
Oui, cela permettra d'identifier le nom d'utilisateur associé à la session SQL Server qui effectue la mise à jour. Espérons que connaître l'utilisateur et le temps sera suffisant pour déterminer quelle application était responsable. – richardtallent