PDA

View Full Version : Datensatz aus PF gelöscht - Wie Protokollieren?



Seiten : 1 [2] 3

Andreas_Prouza
13-01-22, 07:41
Hallo Michael,

ja das ist einer der Vorteile dabei.
In der History-Table gibt es ein paar zusätzliche Spalten (Aktion, Start- u. Endedatum, Änderungsuser usw.)
Damit kannst du dir eine Liste auswerten lassen, in welchem Zeitraum welche Aktionen (Insert, Delete, Update) von welchen Usern durchgeführt wurden.

lg Andreas

mk
13-01-22, 08:21
Hallo Michael,

ja das ist einer der Vorteile dabei.
In der History-Table gibt es ein paar zusätzliche Spalten (Aktion, Start- u. Endedatum, Änderungsuser usw.)
Damit kannst du dir eine Liste auswerten lassen, in welchem Zeitraum welche Aktionen (Insert, Delete, Update) von welchen Usern durchgeführt wurden.

lg Andreas

Hi Andreas,

sorry da habe ich mich etwas falsch ausgedrückt.

Ich möchte wissen bevor ich eine Tabelle umstelle wie viele Änderungen an einer Table stattfinden

Gruß Michael

ILEMax
13-01-22, 08:30
Ich möchte wissen bevor ich eine Tabelle umstelle wie viele Änderungen an einer Table stattfinden


Ich vermute, das dafür die Künstliche Inteligenz erfunden wurde.
Hieß früher Glaskugel.

Sorry ...

BenderD
13-01-22, 08:49
Hi Andreas,

sorry da habe ich mich etwas falsch ausgedrückt.

Ich möchte wissen bevor ich eine Tabelle umstelle wie viele Änderungen an einer Table stattfinden

Gruß Michael

... Journal und jeweils vor löschen des Receivers auswerten. Dabei sollte man im Auge haben, dass Reorg oder Jahresend Programme sich da "speziell" verhalten könnten.

D*B

Andreas_Prouza
13-01-22, 08:53
Zusätzlich zur Glaskugel - die meist viel zu sehr Unterschätzt wird :-) - gibt es die Möglichkeit via ACS bei den Tabellen --> Rechts Klick --> Beschreibung --> Aktivität ... die Statistik der Operationen zu einer Tabelle anzusehen.
Du kannst vorher mit Rechts Klick auf die Tabelle dies zurücksetzen lassen um nach z.B. 1 Tag oder Woche zu sehen wie es sich verhält.

ILEMax
13-01-22, 09:29
Zusätzlich zur Glaskugel - die meist viel zu sehr Unterschätzt wird :-) - gibt es die Möglichkeit via ACS bei den Tabellen --> Rechts Klick --> Beschreibung --> Aktivität ... die Statistik der Operationen zu einer Tabelle anzusehen.

Das kann erfahrungsgemäß nur die Vergangenheit anzeigen!

Andreas_Prouza
13-01-22, 09:47
Das kann erfahrungsgemäß nur die Vergangenheit anzeigen!
Außer du kombinierst es mit der Glaskugel

Fuerchau
13-01-22, 10:06
Problematisch sind aber auf jeden Fall Pseudoänderungen wie sie z.B. bei Infor XPPS angewendet werden.
Dies gilt auch ins besonders bei Stammdaten.
Bei jeder Veränderung von stammdatenbezogenen Werten, wird ein Update auf die Stammdaten mit User/Jobname gemacht, die nach dem Erfolg der Buchung wieder zurückgenommen wird.
Dies ist halt der Nicht-SQL-Methode und dem Nichtwissen von Satzsperrlogiken geschuldet.
Dies war auch das Problem des o.g. Journalversuches, dass ca. 10GB je Stunde an Journaldaten erzeugte.
Bei Temporaltabellen muss man also höllisch aufpassen, dass auch nur tatsächliche Updates stattfinden.
Sonst hast du plötzlich 100te Änderungen 1 Satzes pro Tag.

Wenn man aber Bewegungswerte (Lagerbestand, Auftragsbestand o.ä.) in Stammdaten unterbringt sind Temporaltabellen nicht empfehlenswert. Hier muss man auf jeden Fall genau prüfen bevor man das umsetzt.

Zur Auswertung solcher Änderungen ist hier tatsächlich nur ein Journal möglich, wie es Dieter schon beschrieben hat, da hiier nur auf Satzebene protokolliert wird. Auditjournale beobachten nur Objektveränderungen.

Robi
13-01-22, 10:20
Auch wir verwenden Trigger für die 'Historisierung'.
Das gibt uns die Möglichkeit unnötige Historische Daten gar nicht erst zu schreiben.
U.a. weil unsere Anwendung auch mit Software seitigen Sperren arbeitet und dabei auch
konkurierende Updates zulässt. Die Schreib/Lese Programme verwalten alter-Satz, neuer-alter-Satz und neuer Satz. Änderungen an Feldern, z.b. mit technischem Hintergrund, deren Änderung nicht relevant ist, werden bei der Historisierung nicht beachtet. Zunächst ist das aufwändig, aber sehr bewährt.

Fuerchau
13-01-22, 12:00
Immer wieder ähnliche Konzepte.
Konkurierende Updates sind bei Journalisierung und Transaktionen nicht möglich, das erhöht die Sicherheit. Transaktionen sollten möglichst kurz sein.
Mit SQL sind aber tatsächlich auch ohne Transaktion konkurierende Updates durchaus möglich.
Man beachte nur folgendes:

Additive Updates, die man per "set f = f +/- n" sind unproblematisch.
Statische Updates, die man per "set f = n" durchführt sollten Themenbezogen sein.

In .Net gibts ein kleines Framework, dass mir Updatecommand automatisch generiert.
Diese werden auf DataTable-Objekte angewendet und diese enthalten je Zeile und Spalte einen Original und Current-Value.
Der Update wird daher automatisch ergänzt per "where f = oldvalue ...." je Spalte des Selects.
Da steht es außer Frage, dass der Select nach möglichkeit nur die zu ändernden Spalten enthalten sollte.
Über eine Error-Auflistung erhält man die Zeilen, die nicht geändert werden konnten.

Und zu guter letzt:
In manchen DB's gibts Satzversionen. Z.B. bei der Firebird werden Satzversionen vorgehalten, so dass bei entsprechender Transaktion keine Schmutzdaten (dirty reads) vorkommen. Beim Update gibts einen Fehler, wenn die Satzversion bereits neuer ist als für die Transaktion erwartet.
Beim SQL-Server ist das wohl eher rudimentär. Da gibts die Satzversion nur beim After-Update-Trigger und wiederholten Updates, da der SQL-Server keine Before-Trigger kennt (große Schwachstelle).