Wie finde ich heraus, welche Anwendung oder SP die Werte in einer Config-Tabelle ändert? Ich dachte, ich hätte die App isoliert, die dafür verantwortlich war, aber diese speziellen Werte werden immer wieder wahr, wenn ich sie immer wieder falsch ändere.Beobachten Sie eine Datenbank-Spalte, um festzustellen, was geändert wird
Antwort
zunächst eine Logging-Tabelle erstellen:
CREATE TABLE modlog(
datestamp smalldatetime,
username varchar(255) NOT NULL DEFAULT SYSTEM_USER
);
Dann einen UPDATE-Trigger auf der Tabelle erstellen:
CREATE TRIGGER mytable_mods ON mytable FOR UPDATE AS
INSERT INTO modlog(smalldatetime) VALUES (GETDATE());
einfach in die modlog Tabelle späht, um herauszufinden, welcher Benutzer die Tabelle aktualisiert, und wann. Sie könnten sich etwas einfallen lassen und bestimmte Felder aktualisieren, die gerade aktualisiert werden. Ein anderer Ansatz wäre, eine Ablaufverfolgung in SQL Server Profiler einzurichten, filtern Sie es aus, so dass es nur Updates für diese Tabelle zurückgibt und offen bleibt, bis etwas passiert.
Wenn Ihre Anwendungen umfassen die Application Parameter in ihre Verbindungszeichenfolgen Sie app_name verwenden können() statt SYSTEM_USER, die den Namen der Anwendung protokolliert, das Entfernen der zusätzlichen Detektivarbeit. Wenn Sie wissen, dass der Benutzer noch nützlich ist, können Sie herausfinden, was sie tun, um das Update auszulösen.
Erstellen Sie einen Auslöser, um das Update rückgängig zu machen. Warten Sie, bis die App fehlschlägt. Es kann ein sehr einfacher Auslöser sein:
CREATE TRIGGER BugOffRogueProgram
ON MyConfigTable
FOR UPDATE
AS
BEGIN
ROLLBACK TRAN
END
Die bereitgestellten Antworten sind bisher absolut vor Ort - das ist so, wie es in SQL Server 2005.
nur als kurzer Teaser zu tun : In SQL Server 2008 gibt es eine neue Funktion mit dem Namen Change Data Capture, die dieses genaue Szenario "out of the box" unterstützt, ohne dass Sie Trigger schreiben und Tabellen selbst aktualisieren müssen. Ziemlich praktisch!
Marc
- 1. (ColdFusion) Vergleichen Sie zwei Daten, verwenden Sie das Ergebnis, um festzustellen, was angezeigt wird
- 2. Python-Bibliothek, um festzustellen, ob sich eine Datei zwischen verschiedenen Läufen geändert hat?
- 3. So füllen Sie eine Datenbankspalte mit Zufallszahlen
- 4. Was ist eine gute Heuristik, um festzustellen, ob eine Spalte in einem pandas.DataFrame kategorisch ist?
- 5. Verwenden von if ... else ... oder nur wenn ... um festzustellen, was zurückgegeben wird
- 6. Beobachten Sie einen Ordner für Änderungen mit node.js, und drucken Sie Dateipfade, wenn sie geändert werden
- 7. Verwenden Sie AJAX, um SQL-Datenbank nach Änderungen zu beobachten
- 8. Wie überprüfe ich eine Tabelle, um festzustellen, ob eine Zeichenfolge bereits verwendet wird?
- 9. Datenbankspalte wird nicht aktualisiert, wenn die Taste gedrückt wird
- 10. RegEx, um festzustellen, ob eine Zeichenfolge ein bestimmtes Zeichen enthält
- 11. Ändern der GORM-Datenbankspalte
- 12. Mehrere Kontrollkästchen in eine Datenbankspalte einfügen
- 13. Was sind die besten Möglichkeiten, um festzustellen, welchen Port eine Anwendung verwendet?
- 14. Angularjs binden an den Controller, um die Funktion auszuführen, wenn sie geändert wird
- 15. C# - Überprüfen Sie, welches Ereignis geändert/zugegriffen, um eine Immobilie
- 16. Wie Sie mehr als einen Wert in eine Datenbankspalte eingeben
- 17. Wie suchen Sie eine Datenbankspalte, die Markup erlaubt?
- 18. Automatische Aktualisierung einer Datenbankspalte
- 19. Wie öffne ich eine HTML-Datei, wenn sie geändert wird?
- 20. Coldfusion CFPDF liest eine binäre Datenbankspalte
- 21. Vergleichen Sie eine Zeichenfolge mit den Werten einer Datenbankspalte
- 22. Welche Tools sind verfügbar, um festzustellen, welche .NET-Assemblys seit dem letzten Build geändert wurden?
- 23. So überprüfen Sie eine Eingabe, um festzustellen, ob sie mit einem Datensatz in der Datenbank übereinstimmt
- 24. Was ist ein guter Algorithmus um festzustellen, ob eine Eingabe ein perfektes Quadrat ist?
- 25. Portable SQL, um festzustellen, ob eine Tabelle existiert oder nicht?
- 26. Um festzustellen, ob eine Spalte in Datenrahmen oder nicht
- 27. So ermitteln Sie, was eine DependencyProperty geändert hat
- 28. Muss eine Datenbankspalte mit Nummern indiziert werden?
- 29. auf MvcBuildViews mit Teamcity, wenn eine Ansicht geändert wird
- 30. Rufen Sie eine Funktion auf, wenn die Fenstergröße geändert wird
Wird der Benutzername identifiziert? –
@richard, wenn Sie den Benutzernamen mit einer bestimmten Anwendung korrelieren können, sollte dies funktionieren. –
Ja, damit wird der Benutzername identifiziert, der der SQL Server-Sitzung zugeordnet ist, die das Update ausführt. Hoffentlich wissen, der Benutzer und die Zeit wird genug sein, um herauszufinden, welche App verantwortlich war. – richardtallent