Autor Beitrag
timo12
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Mo 14.12.09 08:51 
Hallo,

ich habe eine Applikation die mit eigenen Benutzer arbeitet. Die Benutzer werden in der DB (mssql) gespeichert. Nun möchte ich aber auch ein Logging haben, bei dem ich sehen kann welcher Benutzer was verändert hat.
Wenn ich jeden Applikationsnutzer auf der DB anlegen (was ich sehr umständlich, fehleranfällig und zeitraubend empfinde) kann ich das ja relativ einfach über Trigger auf den Tabellen realisieren, da ich ja den Benutzer habe.

Wenn ich aber aus der Applikation immer nur mit einem SQL-User für alle Nutzer mich an der DB anmelde, wie mache ich das dann? Da weiß der Trigger ja nichts von meinem Benutzernamen in der Applikation. Kann ich der SQLConnection nicht irgend einen Wert mitgeben, der den User angibt, die der Trigger auselesen kann?

Gruß Timo
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 14.12.09 19:09 
Wenn es mit Triggern nicht funktioniert, dann lass die DB doch ganz außen vor und logge stattdessen selbst an allen entsprechenden Stellen im Data Access Layer. Je nachdem, wie der aussieht oder überhaupt existiert, dürfte das ziemlich einfach oder äußerst komplex werden ;) .

_________________
>λ=
CurdledMilk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mo 18.01.10 16:30 
Wie user profile iconKha schon geschrieben hat kann das sehr viel arbeit machen =) Ein nützliches "tool" zum loggen ist log4net code-inside.de/blog/...logging-mit-log4net/

Wenn du es trotzdem auf der Datenbank machen willst musst du bei jedem vorgang den es zu loggen gilt einen "nutzername" parameter mit schicken (z.B. bei allen Prozeduren die ein Insert oder Update machen). Dann kannst du dir eine Tabelle machen die folgenden aufbau hat:

LogID - Int
Zeit - Datetime
Nutzername - varchar(n)
Prozedurname - varchar(n)
Parameter - varchar(n) = dort schreibst du dann sowas wie "parameter1 = wert1, parameter2 = wert2, ...") rein

darauf kannst du dann auch schön auswertungen betreiben