C# Herausfinden ob auf MS SQL-Datenbank zugegriffen wurde

Zhen

Lt. Junior Grade
Registriert
Aug. 2009
Beiträge
299
Hallo CBler,
ich hätte da ein kleines Problem mit dem ich derzeit zu kämpfen habe...

Und zwar folgende Sachlage:
Ich habe einen MS SQL Server 2008 Express am Laufen, worin ich mir meine Wunschdatenbank mit den ganzen Tabellen, etc. eingerichtet habe. Die Anwendung zum Schreiben und Lesen in der Datenbank habe ich jetzt soweit ebenfalls fertig.

Zum Problem:
Da ich in meiner Anwendung auch einen Button zum Aktualisieren der Datensätze (die in meiner Anwendung angezeigt werden) habe, würde ich das ganze gerne noch um einen Schritt erweitern. Ich will, dass beim aktualisieren geprüft wird ob es seit dem letzen auslesen der Datensätze irgendwelche Zugriffe/Änderungen an der Datenbank gab.

Mit dieser Info könnte ich den Button vielleicht sogar noch grafisch aufpeppen damit er hinweist, dass es tatsächlich Änderungen gab, gab es keine bleibt er in der selben Farbe (oder zumindestens etwas in dieser Art und Weise).


Hat jemand eine Ahnung wie ich herausfinde ob es da Änderungen an der DB gab?


Vielleicht ist es ja sogar noch möglich herauszufinden an welcher Tabelle exakt die Änderungen waren, dann könnte man sogar etwas detailiertere Meldung anzeigen lassen.

Danke schon mal im Vorraus für eure Hilfe.
 
Sowas kann man mit Gültigkeiten bewerkstelligen. Z.B. könnteste das Feld LAST_MODIFIED (DATETIME) zu den Tabellen hinzufügen und bei jedem Update den aktuellen Timestamp hinsetzen.
Dann kann man die Logik im Programm so abbilden:
1. In der GUI wird ein Datensatz aufgerufen. Das Datum aus LAST_MODIFIED befindet sich z.B. in einer Variable
2. Vor dem Speichern der Änderung wird überprüft, ob sich der Datensatz geändert hat (LAST_MODIFIED in der DB)

Wenn LAST_MODIFIED (Variable) = LAST_MODIFIED (DB) --> keine Änderung in der DB
Wenn LAST_MODIFIED (Variable) != LAST_MODIFIED (DB) --> Änderung in der DB
 
Hmm.... naja sowas hat ich auch schon im Sinn gehabt, aber deswegen extra eine neue Tabelle mit nur einer Zeile und einer Spalte zu erstellen schien mir übertrieben :D :D :D

Habe gehofft es gibt evtl. bereits eine eigene Lösung dafür vom SQL Server 2008.
Z.B. dass das Datenbank-Managementsystem die Zugriffe mitloggt oder so?! :-/
 
Keine neue Tabelle, sondern die bestehende Tabelle um ein weiteres Attribut erweitern.
 
Danke für den Tipp. Werds mir gleich mal anschauen :)

Also bei der ersten Variante (zweite noch nicht angeguckt), müsste ich wohl doch eine Tabelle anlegen.
Grund ist, weil ich mehrere Tables in meiner DB habe und die Änderungen könnten in jeder davon vorkommen...

Statt in jeder Table jetzt eine neue Spalte anzulegen, mach ich lieber etwas globales, da mich ja allgemein Änderungen in der DB interessieren und nicht nur in einer Table oder gar Zeile... ;-)
 
Zurück
Oben