Startseite > Newsgroups > dotnetpro.public.programming > Thema "Änderungstatus mitloggen"

Thema "Änderungstatus mitloggen"

ThemaAutorDatum
Änderungstatus mitloggen Jan Lorenz 08.08.2006 13:29
» Re: Änderungstatus mitloggen Karsten Heimer 08.08.2006 13:56
» Re: Änderungstatus mitloggen Jan Lorenz 09.08.2006 08:32
» Re: Änderungstatus mitloggen Jan-Cornelius Molnar 11.08.2006 01:32
» Re: Änderungstatus mitloggen Roland Peissert 09.08.2006 08:43
» Re: Änderungstatus mitloggen Jan Lorenz 09.08.2006 14:37
» Re: Änderungstatus mitloggen Bernhard Renner 10.08.2006 21:44

Änderungstatus mitloggen

08.08.2006 13:29

Jan Lorenz

Antworten

Hallo zusammen,

ich bräuchte mal einen Ansatzpunkt für folgendes: In einer
Stammdatenverwaltung (Kundenstamm mit vielen Feldern) können verschiedene
Benutzer Änderungen vornehmen und abspeichern. Ich möchte nun einen
Mechanismus einbauen, der all diese Änderungen mitloggt in der Datenbank.
Ich möchte folgende Infos mitsschreiben: Tabellenname, in der die Änderung
greift; Feldname; Benutzername; PC-Name; alter Wert; neuer Wert; Datum.

Nun wollte ich fragen, ob jemand einen schönen Ansatzpunkt hat, um das
Problem möglichst "sauber" zu lösen.


Viele Grüße
Jan

 
 

Re: Änderungstatus mitloggen

08.08.2006 13:56

Karsten Heimer

Antworten


"Jan Lorenz" schrieb im Newsbeitrag
news:25a4a254-abb1-4596-84c9-c5e2332c4ef5@news.dotnetpro.de...
> Hallo zusammen,
>
> ich bräuchte mal einen Ansatzpunkt für folgendes: In einer
> Stammdatenverwaltung (Kundenstamm mit vielen Feldern) können
> verschiedene
> Benutzer Änderungen vornehmen und abspeichern. Ich möchte nun einen
> Mechanismus einbauen, der all diese Änderungen mitloggt in der
> Datenbank.
> Ich möchte folgende Infos mitsschreiben: Tabellenname, in der die
> Änderung
> greift; Feldname; Benutzername; PC-Name; alter Wert; neuer Wert;
> Datum.
>
> Nun wollte ich fragen, ob jemand einen schönen Ansatzpunkt hat, um das
> Problem möglichst "sauber" zu lösen.
>
>
> Viele Grüße
> Jan
Nun, ich würde da schon mal 2 Möglichkeiten sehen:
- auf "Objektebene", also in der Schicht, in welcher Deine Daten
gespeichert sind
- auf "Datenbankebene", wahrscheinlich mit Triggern o.ä.
Die "Objektebene" ist natürlich sehr flexibel und vor allem
DB-unabhängig. Du benötigst aber eine "Speicher-Routine", welche für
alle Objekte die gleiche ist, sonst hast Du haufenweise redundanten
Code. Die Datenbankebene läßt sich dafür nicht austricksen, wenn man
Änderungen direkt in der Datenbank vornimmt. Das wäre also sicherer, ist
aber von der DB abhängig.
Gruß, Karsten.

 
 

Re: Änderungstatus mitloggen

09.08.2006 08:32

Jan Lorenz

Antworten


Danke für die Infos. Scheint also eine Grundsatzfrage zu sein, ob auf
DB-Ebene oder Programmebene. Programmebene wäre mir eigentlich lieber, aber
die Programmierung auf DB-Ebene scheint mir im Moment einfacher. Ich werde
mich mal informieren, was der SQL-Server 2000 so mit bringt.
Jan
"Karsten Heimer" schrieb im Newsbeitrag
news:ccb2ecd3-00df-42fb-af57-11859586be38@news.dotnetpro.de...
> "Jan Lorenz" schrieb im Newsbeitrag
> news:25a4a254-abb1-4596-84c9-c5e2332c4ef5@news.dotnetpro.de...
>> Hallo zusammen,
>>
>> ich bräuchte mal einen Ansatzpunkt für folgendes: In einer
>> Stammdatenverwaltung (Kundenstamm mit vielen Feldern) können verschiedene
>> Benutzer Änderungen vornehmen und abspeichern. Ich möchte nun einen
>> Mechanismus einbauen, der all diese Änderungen mitloggt in der Datenbank.
>> Ich möchte folgende Infos mitsschreiben: Tabellenname, in der die
>> Änderung
>> greift; Feldname; Benutzername; PC-Name; alter Wert; neuer Wert; Datum.
>>
>> Nun wollte ich fragen, ob jemand einen schönen Ansatzpunkt hat, um das
>> Problem möglichst "sauber" zu lösen.
>>
>>
>> Viele Grüße
>> Jan
> Nun, ich würde da schon mal 2 Möglichkeiten sehen:
> - auf "Objektebene", also in der Schicht, in welcher Deine Daten
> gespeichert sind
> - auf "Datenbankebene", wahrscheinlich mit Triggern o.ä.
> Die "Objektebene" ist natürlich sehr flexibel und vor allem DB-unabhängig.
> Du benötigst aber eine "Speicher-Routine", welche für alle Objekte die
> gleiche ist, sonst hast Du haufenweise redundanten Code. Die
> Datenbankebene läßt sich dafür nicht austricksen, wenn man Änderungen
> direkt in der Datenbank vornimmt. Das wäre also sicherer, ist aber von der
> DB abhängig.
> Gruß, Karsten.

 
 

Re: Änderungstatus mitloggen

11.08.2006 01:32

Jan-Cornelius Molnar

Antworten


Keywords:
"Jan Lorenz" schrieb im Newsbeitrag
news:3068be81-d32b-402a-912f-4c6b7fd4780e@news.dotnetpro.de...
Hi Jan,
> Danke für die Infos. Scheint also eine Grundsatzfrage zu sein, ob auf
> DB-Ebene oder Programmebene. Programmebene wäre mir eigentlich lieber,
> aber die Programmierung auf DB-Ebene scheint mir im Moment einfacher. Ich
> werde mich mal informieren, was der SQL-Server 2000 so mit bringt.
wenn du schon am Suchen bist, kannst du dich auch über das
Transaktionsprotokoll des Sql Servers informieren.
Wenn du Transaktionen zum Updaten der DB benutzt (was beim SqlDataAdapter
immer der Fall ist), dann können sämtliche geloggt werden.
Viel Erfolg
Jan-Cornelius Molnar
MS CLIP
http://www.vb-magazin.de/

 
 

Re: Änderungstatus mitloggen

09.08.2006 08:43

Roland Peissert

Antworten

Ich habe so etwas schon gemacht, die beste Lösung ist mit einem trigger in der datenbank. Du kannst die eingeloggten Benutzer über DB-Systemvariablen abfragen. Die Logs kannst du entweder in die gleiche Tabelle oder in eine andere Tabelle schreiben.


Jan Lorenz schrieb am 08.08.2006 um 13:29 in "Änderungstatus mitloggen":
> Hallo zusammen,
>
> ich bräuchte mal einen Ansatzpunkt für folgendes: In einer
> Stammdatenverwaltung (Kundenstamm mit vielen Feldern) können verschiedene
> Benutzer Änderungen vornehmen und abspeichern. Ich möchte nun einen
> Mechanismus einbauen, der all diese Änderungen mitloggt in der Datenbank.
> Ich möchte folgende Infos mitsschreiben: Tabellenname, in der die Änderung
> greift; Feldname; Benutzername; PC-Name; alter Wert; neuer Wert; Datum.
>
> Nun wollte ich fragen, ob jemand einen schönen Ansatzpunkt hat, um das
> Problem möglichst "sauber" zu lösen.
>
>
> Viele Grüße
> Jan

 
 

Re: Änderungstatus mitloggen

09.08.2006 14:37

Jan Lorenz

Antworten


Ok. Danke. Nur ein Problem hätte ich dabei noch: Ich möchte beim Loggen
gerne einen Beschreibungstext mitloggen, der die Änderung näher beschreibt,
wie z.B. "Straße geändert", damit ich diese später beim Anwender anzeigen
lassen kann. Aber wie? Ich müsste eine Zuordnungstabelle schaffen, die jedem
Datenbankfeld einen solchen Beschreibungstext zuordnen lässt. Im Client
müsste ich dann das auswerten.
Gibt es noch bessere Ansätze.
Gruß
Jan
"Roland Peissert" schrieb im Newsbeitrag
news:0be77b12-5350-4a32-878b-e439f32e6f32@news.dotnetpro.de...
> Ich habe so etwas schon gemacht, die beste Lösung ist mit einem trigger in
> der datenbank. Du kannst die eingeloggten Benutzer über DB-Systemvariablen
> abfragen. Die Logs kannst du entweder in die gleiche Tabelle oder in eine
> andere Tabelle schreiben.
>
>
> Jan Lorenz schrieb am 08.08.2006 um 13:29 in "Änderungstatus mitloggen":
>> Hallo zusammen,
>>
>> ich bräuchte mal einen Ansatzpunkt für folgendes: In einer
>> Stammdatenverwaltung (Kundenstamm mit vielen Feldern) können verschiedene
>> Benutzer Änderungen vornehmen und abspeichern. Ich möchte nun einen
>> Mechanismus einbauen, der all diese Änderungen mitloggt in der Datenbank.
>> Ich möchte folgende Infos mitsschreiben: Tabellenname, in der die
>> Änderung
>> greift; Feldname; Benutzername; PC-Name; alter Wert; neuer Wert; Datum.
>>
>> Nun wollte ich fragen, ob jemand einen schönen Ansatzpunkt hat, um das
>> Problem möglichst "sauber" zu lösen.
>>
>>
>> Viele Grüße
>> Jan

 
 

Re: Änderungstatus mitloggen

10.08.2006 21:44

Bernhard Renner

Antworten

Hallo Jan,
wir haben dies mit Hilfe von ADO.NET und DataSets (zusammen einer
XML-Schema-Steuerdatei) realisiert.
Eine Datenzugriffsschicht wertet alle Änderungen and deren DataSets kurz vor
dem Abgleich mit den Dantenbanken aus und schreibt die Änderungen in Log
Tabellen (über Methode DataSet.GetChanges). Über eine XML-Schema-Steuerdatei
können Datenfelder oder Relationen noch gefiltert werden, die z. B. die
nicht in die Log Tabellen mitaufgenommen werden.

Eine Log Tabelle hat folgendes Schema:
[IDObject]
[IDTable]
[IDUser]
[TimeStamp]
[Modification] (insert,update,delete)
[XMLText] (kann über XML-Schema-Steuerdatei auch z. T. automatisch erzeugt
werden)

Das schreiben in die Log Tabellen ist immer in Transaktionen eingebunden.
Für jedes Objekt mit der IDObject kann die Historie dann in einer Liste
angezeigt werden.

Grüße
Bernie


Jan Lorenz schrieb am 08.08.2006 um 13:29 in "Änderungstatus mitloggen":
> Hallo zusammen,
>
> ich bräuchte mal einen Ansatzpunkt für folgendes: In einer
> Stammdatenverwaltung (Kundenstamm mit vielen Feldern) können verschiedene
> Benutzer Änderungen vornehmen und abspeichern. Ich möchte nun einen
> Mechanismus einbauen, der all diese Änderungen mitloggt in der Datenbank.
> Ich möchte folgende Infos mitsschreiben: Tabellenname, in der die Änderung
> greift; Feldname; Benutzername; PC-Name; alter Wert; neuer Wert; Datum.
>
> Nun wollte ich fragen, ob jemand einen schönen Ansatzpunkt hat, um das
> Problem möglichst "sauber" zu lösen.
>
>
> Viele Grüße
> Jan

Login
Sie sind nicht eingeloggt.

Login & Registrierung
Abo bestellen





Developer Week Special

dotnetpro präsentiert die Developer Week vom 24. – 27. Juni 2013 im NCC Ost, Nürnberg – eine der größten Konferenzen ganz Europas für Entwickler

Anzeige





Newsletter
Tragen Sie Ihre E-Mailadresse für den kostenlosen Newsletter von dotnetpro ein.


Umfrage
Kollegen: Stütze oder Bremse?





Ergebnis anzeigen