[Gelöst] CC: Datensatz wiederherstellen

21. Mai 2014 14:13

Hallo.

Angenommen in einer Tabelle wurden 4000 Records gelöscht.

Welchen Weg gibt es, diese Daten im CC wiederherzustellen? Also ohne in die SQL Datenbank eingreifen zu müssen.

Wie kann ich die Daten wieder konsistent in die Tabelle bekommen?

Evtl. durch Dataports, indem ich die Daten aus meiner Sicherung exportiere und dann in meine Tabelle importiere?

Gibt es andere Möglichkeiten?

MfG
Zuletzt geändert von navCH am 20. Januar 2016 11:34, insgesamt 1-mal geändert.

Re: CC: Datensatz wiederherstellen

21. Mai 2014 15:16

navCH hat geschrieben:Hallo.
Evtl. durch Dataports, indem ich die Daten aus meiner Sicherung exportiere und dann in meine Tabelle importiere?

Das geht prinzipiell schon, falls im OnDelete-Trigger dieser Tabelle aber Code steht, der Datensätze aus anderen Tabellen löscht, müssen die natürlich auch versorgt werden.
Den besten Überblick hat man, wenn man die Datensätze aus der Sicherung erst mal in eine Kopie der Tabelle einliest und von dieser aus dann die fehlenden Sätze in die echte Tabelle kopiert. Dann kann man leichter vergleichen, welche Sätze in Tabelle A, aber nicht in B vorhanden sind und umgekehrt welche in B aber nicht in A.

Re: CC: Datensatz wiederherstellen

23. Mai 2014 11:00

Hallo Kowa,
Kowa hat geschrieben:Das geht prinzipiell schon, falls im OnDelete-Trigger dieser Tabelle aber Code steht, der Datensätze aus anderen Tabellen löscht, müssen die natürlich auch versorgt werden.

Wie versorgen? Mit den getriggerten Daten aus der anderen Tabelle? Also wenn durch den Verlust auch die Daten in der anderen Tabelle verschwunden sind müssten sie auch wieder hergestellt werden? Oder verstehe ich dich jetzt falsch?
Ist der OnDelete() Trigger der einzige Trigger den ich berücksichtigen muss bei der Wiederherstellung der Daten?
Was ist mit TableRelations bzw. Flowfields? Wenn da was existiert in der Tabelle, kann ich da was kaputt machen?


Kowa hat geschrieben:Den besten Überblick hat man, wenn man die Datensätze aus der Sicherung erst mal in eine Kopie der Tabelle einliest und von dieser aus dann die fehlenden Sätze in die echte Tabelle kopiert. Dann kann man leichter vergleichen, welche Sätze in Tabelle A, aber nicht in B vorhanden sind und umgekehrt welche in B aber nicht in A.

Also einlesen in Kopie von betroffene Tabelle und dann per Copy/Paste in die richtige Tabelle

MfG

Re: CC: Datensatz wiederherstellen

23. Mai 2014 12:15

Also wenn durch den Verlust auch die Daten in der anderen Tabelle verschwunden sind müssten sie auch wieder hergestellt werden?

Ja, sonst gibt es Inkonsistenzen.
Tabellentrigger immer,je nachdem wie das passiert ist, auch OnDeleteRecord-Trigger in Form/Page Trigger ( Karte und Übersicht).
Nur wenn via C/AL gelöscht wurde mit DELETE oder DELETE(FALSE) statt DELETE(TRUE), bzw. DELETEALL oder DELETEALL(FALSE) statt DELETEALL(TRUE) kann das entfallen, dann wird der Tabellentrigger ja nicht ausgeführt.
Was ist mit TableRelations bzw. Flowfields? Wenn da was existiert in der Tabelle, kann ich da was kaputt machen?

Andere Tabellen, die TableRelations auf diese haben und Werte erwarten, werden ggf. Probleme machen solange die fehlen.
Die Flowfields aus anderen Tabellen erholen sich ganz von alleine, sobald die Datensätze wieder da sind.
Also einlesen in Kopie von betroffene Tabelle und dann per Copy/Paste in die richtige Tabelle

Nein, als Batchlauf, die Datensätze über die gleichen Primärschlüsselwerte vergleichen und bei fehlenden (IF NOT Echttabelle.GET(PuffertabellePKfeld1,[…])
per TRANSFERFIELDS die Werte übertragen und den Datensatz anlegen.