[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2008
    Beiträge
    3

    iSeries ODBC DB2 Aktualisierungen unter Vista

    Hallo,

    nachdem ich nun fast 4 h mit Experimenten und Suchen aufgegeben habe, möchte ich mein kleines Problem hier mal online stellen, in der Hoffnung das es jemand schon gelöst hat.

    Wir fahren eine iSeries mit V5R3 und dem neusten Servicepack welches lt. IBM auch Vista Ultimate 32 bit unterstützen soll.

    Mittels Access und ODBC (ODBC-Zugriffsmodus verwenden) greife ich auf eine DB2 Datenbank zu und möchte gerne dort Inhalte verändern und speichern. Nach dem Verlassen des geänderten Datensatzes bekomme ich jedoch eine Fehlermeldung:
    ODBC Aktualierung in einer verknüpften Tabelle XXX fehlgeschlagen.
    [IBM][iSeries Access ODBC-Treiber][DB2 UDB]SQL7008 - XX in XX für Operation ungültig. (#-7008).

    Es sei noch zu erwähnen, das das gleiche unter XP einwandfrei funktioniert.

    Über jeden Tip würde ich mich freuen.

    Gruß und schönes Wochenende
    Christian Loff

    GELÖST: Wenn man zu blind ist und die Routine glaubt zu kennen und Einstellungen meint schon längt vorgenommen zu haben:
    Normalerweiese deutet das auf fehlende Journalisierung hin.
    In den Verbindungseigenschaften (ODBC-Config) in den Erweiterten Eigenschafte "Sofortiges Commit (*NONE)" auswählen.
    Last edited by Krischan; 05-04-08 at 17:58. Grund: Gelöst

  2. #2
    Registriert seit
    Aug 2007
    Beiträge
    30
    Dieses Commit bewirkt was?
    Erfolgreiche Übertragung JA/NEIN?

  3. #3
    Registriert seit
    Apr 2004
    Beiträge
    105
    Wenn Commit immediate = *NONE gesetzt ist, wird ODBC jede Datei updaten. Egal ob es ein Datei-Journal gibt oder nicht.

  4. #4
    Registriert seit
    Aug 2007
    Beiträge
    30
    Wenn COMMIT auf True steht u. die Datei kein Journal hat kracht es dann?

    Ist das Transaktionsprotokoll beim SQL 2005 Server vergleichbar mit dem des Journals auf der DB2?

  5. #5
    Registriert seit
    Apr 2004
    Beiträge
    105

  6. #6
    Registriert seit
    Aug 2007
    Beiträge
    30
    Ah interessant!

    Ich hab mal nachgesehen, in meinem ODBC

    Commit-Modus: "Lesen ohne COMMIT (*CHG)

    Hatte bisher auch wunderbar geklappt. Den Unterschied zu *NONE weiß ich nicht.

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Commit Steuerung bewirkt, dass Transaktionen geklammert werden können und die Datenbank sicherstellt, dass sie nicht von konkurrierenden Transaktionen beeinflusst werden. Im DB 2 wird das mit Satzsperren sicher gestellt und setzt Journalisierung voraus (damit man mit rollback zurück setzen kann, wenn es einen Konflikt gibt).
    Ein einfaches Beispiel warum das einstellen von Auto Commit oder *none wenn man updates macht, fast immer Unfug ist:
    Benutzer A will eine Lagermenge um 10 erhöhen, gleichzeitig will B um 3 erhöhen
    - A liest den momentanen Inhalt von 12
    - B liest ebenfalls 12
    - A schreibt 22 rein
    - B schreibt 15 rein
    Resultat 12 + 10 + 3 = 15

    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/

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von GutmannHGW Beitrag anzeigen
    Ah interessant!

    Ich hab mal nachgesehen, in meinem ODBC

    Commit-Modus: "Lesen ohne COMMIT (*CHG)

    Hatte bisher auch wunderbar geklappt. Den Unterschied zu *NONE weiß ich nicht.
    Solange Du nur Daten aus nicht aufgezeichneten Dateien liest, mach der Commitment Level *CHG auch keine Probleme. (Auch wenn das Ganze unsauber angegeben ist!)

    Da Du aber, wie oben gesagt "Inhalte verändern und speichern
    " möchtest, müssen die Dateien bei *CHG aufgezeichnet werden. Commitment Controll stellt sicher, dass eine Transaktion (alle Aktionen zwischen 2 Commits) entweder komplett ausgeführt oder nicht ausgeführt werden, d.h. eine Transaktion wird mit Commit beendet und damit festgeschrieben oder durch Angabe des Befehls Rollback bis zum vorhergehenden Commit zurückgesetzt. Die veränderten Datensätze bleiben gesperrt und erst durch Commit oder Rollback freigegeben.

    Wird ohne Journalisierung und ohne Commitment Control gearbeitet, ist ein Zurücksetzen im nicht möglich!

    Werden die Dateien nicht in einem Journal aufgezeichnet und in den entsprechenden Dateien müssen Daten hinzugefügt, geändert oder gelöscht werden, muss mit Commitment Level *NONE gearbeitet werden.

    M.E. ist es heute sträflicher Leichtsinn physische Dateien oder SQL Tabellen nicht aufzuzeichnen und ohne Commitment Control zu arbeiten.
    Birgitta Hauser

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

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    das ist die default Treiber Einstellung und die ist auch so sinnvoll, denn sie stellt eben sicher, dass ein update nicht möglich ist, wenn man nicht journalisiert; soweit man per ODBC (oder SQL) lediglich liest (und über RPG record level die Daten erstellt), braucht man dann nicht unbedingt ein Journal.

    D*B

    PS: freut mich, dass sich die Einsicht verbreitet, dass man Journal und Transaktionskontrolle verwendet!

    Zitat Zitat von B.Hauser Beitrag anzeigen
    Solange Du nur Daten aus nicht aufgezeichneten Dateien liest, mach der Commitment Level *CHG auch keine Probleme. (Auch wenn das Ganze unsauber angegeben ist!)
    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
    Aug 2001
    Beiträge
    2.928
    @Dieter

    PS: freut mich, dass sich die Einsicht verbreitet, dass man Journal und Transaktionskontrolle verwendet!
    auch wenn wir sonst nicht immer der gleichen Meinung sind, in dieser Beziehung habe ich Dir sicher noch nie widersprochen.

    Bei mir wird jede Popel-Datei aufgezeichnet (und das schon seit mindestens 10 Jahren), was bisweilen schon bei Kunden, Erstaunen hervorgerufen hat, weil sich die Dateien für die Hochverfügbarkeitslösung nicht nochmals journalisieren lassen wollten.

    Birgitta
    Birgitta Hauser

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

Similar Threads

  1. Java ... JDBC ... Zugriff DB2 - Port iSeries ???
    By bode in forum NEWSboard Java
    Antworten: 7
    Letzter Beitrag: 02-09-05, 15:09
  2. GESUCHT Anwendungsentwickler (m/w) IBM iSeries - OS/400, RPG, DB2
    By Burgy Zapp in forum NEWSboard Server Job
    Antworten: 1
    Letzter Beitrag: 05-05-05, 19:00
  3. MS Access Zugriff via ODBC auf iSeries Tabellen
    By Rico in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 21-03-05, 09:43
  4. Iseries DB2
    By TARASIK in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 24-02-05, 19:16
  5. Datentransfer DB2 iseries nach DB2 RS/6000
    By rcide in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 17-08-04, 12:40

Berechtigungen

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