[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Thema: SQL Update

  1. #1
    Registriert seit
    Apr 2009
    Beiträge
    69

    SQL Update

    Hallo zusammen,

    ich hatte heute Morgen einen SQL Update Befehl zu früh auf die Reise geschickt.
    Nun hat mir der Befehl in der DB eine unbekannte Anzahl von Feldern verändert!
    Leider weiß ich nun nicht mehr wie viele dies waren.
    Gibt es eine Möglichkeit dies heraus zu finden. Das ganze müsste rückgänig gemacht werden.


    Gruß
    co_steffl

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Wenn die Tabelle journalisiert ist, kann man dies per Journaleinträge zurückdrehen.
    Wenn nicht hast du nur dann eine Chance, wenn du eine zeitnahe Sicherung der Datei zurück sicherst und die Daten dann (per Programm, SQL) abgleichst und wiederherstellst.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    Wie zu früh? und unbekannte Anzahl von Feldern?
    Was für'n SQL? via Pgm? oder Navigator? oder Strsql?
    Journalisierung eingeschaltet?
    Sicherung vom Vortag?
    Fragen über Fragen ...
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  4. #4
    Registriert seit
    Apr 2009
    Beiträge
    69
    Über StrSql hätte noch weiterblättern müssen und habe Enter gedrückt - so einfach
    Journal ist eingeschaltet habe aber damit noch nie zurückgedreht

  5. #5
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Im STRSQL wird direkt unter der Anweisung gemeldet, wie viele Datensätze tatsächlich aktualisiert wurden.

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von co_steffl Beitrag anzeigen
    Über StrSql hätte noch weiterblättern müssen und habe Enter gedrückt - so einfach
    Journal ist eingeschaltet habe aber damit noch nie zurückgedreht
    RMVJRNCHG ist Dein Freund, ist aber Waffenschein pflichtig und wenn Änderungen hinterherkamen, geht das sowieso nicht mehr wirklich. Sinnvoll ist in jedem Fall vorher mit DSPJRN mit Selektion auf Job und Zeit, um zu sehen wohin überall geschrieben wurde. Erst denken, dann handeln: der zweite Fehler ist immer der schlimmere!

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Vielleicht noch ein Tipp für die Zukunft:

    Ändere die Option Commit im STRSQL von *NONE auf *CHG (F13 --> Auswahl 1 --> Commit)

    Sofern Du jetzt versuchst eine Tabelle/phys.Datei, die nicht in einem Journal aufgezeichnet ist, wird der Update/Insert/Delete schief gehen, es sei denn Du würdest WITH NC (= With NO COMMIT) am Ende des SQL-Befehls angeben.
    Fehlermeldung: YOURFILE in YOURLIB für Operation ungültig.
    Damit weißt Du dann: Hoppla Vorsicht! Am besten die Daten zuerst sichern.

    Wenn Deine Dateien aufgezeichnet sind und Dir passiert wieder das gleiche Malheur, kannst Du Dich gemütlich zurücklehnen und warten bis der Update fertig ist.
    Im Anschlusse gibst Du ROLLBACK ein, Datenfreigabe und die Daten werden auf den Stand vor dem Update zurückgesetzt.

    Wenn Du geprüft hast, ob alle Daten korrekt upgedated sind, musst DU einen COMMIT ausführen.
    Sofern Du den COMMIT vergisst bleiben die geänderten Sätze gelockt bis entweder in Deinem Job ein Commit oder Rollback ausgeführt wird, oder der Job beendet wird. Wird der Job übrigens beendet, ohne dass Commit ausgeführt wurde, egal ob normal oder abnormal, werden die geänderten Daten ebenfalls zurückgesetzt.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  8. #8
    Registriert seit
    Apr 2009
    Beiträge
    69
    @Bender
    Änderungen hinterher kamen nicht. Mit DSPJRN habe ich die Records schon gefunden. Jedoch bin ich mir nicht sicher wie ich den RMVJRNCHG anwenden muss. Ich sehe die Sätze UB + UP

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    am Besten suchst Du Dir im Journal die erste und letzte Journal ID und dann kannst Du mit RMVJRNCHG die Dtaeien angeben und von JournalId bis Journal Id, wobei von > als bis ist, also rückwärts.

    Ansonsten noch der Tip, dass man bei Bulk Operationen (also sehr vielen zu ändernden Sätzen mit interaktivem SQL und Commit sehr sehr vorsichtig sein muss: man sammelt da unzählige Sperren ein, kann die gesamte Kiste dicht knebeln und die laufende Operation lässt sich nicht abbrechen, aber konkurriernde Jobs brechen ab, wegen der Sperren.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #10
    Registriert seit
    Apr 2009
    Beiträge
    69
    Hallo
    OK. Dank an alle
    Ich kann zwar genau raussuchen welche Records betroffen waren. Aber ich kann nicht sagen ob die Records bereits anderweitig geändert wurden. Da ich annehme das der Rollback (RMVJRNCHG) auf Record Ebene basiert kann ich auch nicht sagen ob ich mir damit noch mehr kaputt mache. Also macht das Jrn so auch keinen Sinn. Wenn es auf Feldebene arbeiten würde wäre das Ok.

    Also muss ich einen Weg über RPG suchen. Danke nochmal

    Gruß
    co_steffl

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ...
    - dspjrn output(*outfile) mit Eingrenzung auf die Datei sagt einem auch, ob Änderungen danach waren.
    - auf meiner OpenSource Seite ist ein Programm, das einem die Journalsätze aufbereitet in eine Datei stellt. damit kann man mit einem SQL Script sogar Deltas rausnehmen.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  12. #12
    Registriert seit
    Apr 2009
    Beiträge
    69
    OK Danke für den Tipp
    werde mir das mal anschauen.

    Gruß
    co_steffl

Similar Threads

  1. embedded sql update
    By tarkusch in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 02-06-14, 09:45
  2. SQL update
    By Joe in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 15-04-03, 15:06
  3. SQL update
    By Joe in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 01-04-03, 19:50
  4. Update mit SQL
    By schreibr in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 12-09-01, 08:22
  5. Update auf V4R5
    By andigoering in forum NEWSboard Server & Hardware Markt
    Antworten: 3
    Letzter Beitrag: 23-08-01, 10:38

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •