[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2007
    Beiträge
    2

    SQL-Verbindungsserver zur iSeries über IBM OLE DB Provider

    Hallo zusammen,

    ich habe folgendes Problem mit Datenaktualisierungen einer AS400-Tabelle über einen SQL-2005 Verbindungsserver:

    Eine einfache Abfrage der Art:

    update "ISERIES"."S658E27C"."TESTDT"."KUSTP" set KUPENA = 'X' where KUKNR = 10042

    funktioniert einwandfrei.

    sobald die Abfrage in Kombination mit einem Join einer SQL-Tabelle aufsgeführt wird:

    update "ISERIES"."S658E27C"."TESTDT"."KUSTP" set KUPENA = 'X'
    from "ISERIES"."S658E27C"."TESTDT"."KUSTP" A
    inner join DWHTrans.dbo.tImport B
    on A.KUFA = B.FirmaNr and A.KUKNR = B.KunNr where KUKNR = 10042

    kommt folgende Fehlermeldung:

    Der OLE DB-Anbieter "IBMDA400" für den Verbindungsserver "ISERIES" hat die Meldung "CPF4328: Teildatei KUSTP nicht in Journal *N aufgezeichnet.
    " zurückgeben.

    Wird anstelle eines updates ein select geschrieben, funktioniert auch diese Abfrage.

    Hat jemand eine Idee ob vielleicht bestimmte Einstellungen im OLE DB-Treiber oder auf der AS400 dieses Problem lösen?

    Vielen Dank im Voraus!


  2. #2
    Registriert seit
    Mar 2005
    Beiträge
    74
    Soweit mir bekannt ist unterstützt die AS400 keine JOINS in einem UPDATE oder DELETE Statement.
    Du kannst das aber mit einer EXISTS-Abfrage abhandeln.

  3. #3
    Registriert seit
    Jun 2007
    Beiträge
    2
    Vielen Dank für die rasche Antwort.

    Die Abfrage

    update "ISERIES"."S658E27C"."TESTDT"."KUSTP" set KUPENA = 'X'
    from "ISERIES"."S658E27C"."TESTDT"."KUSTP" A
    where exists (select 1 from DWHTrans.dbo.tImport B
    where A.KUFA = B.FirmaNr and A.KUKNR = B.KunNr and A.KUDKS = B.DebKredKz)

    schlägt auch fehl mit:

    Der OLE DB-Anbieter "IBMDA400" für den Verbindungsserver "ISERIES" hat die Meldung "CPF4328: Teildatei KUSTP nicht in Journal *N aufgezeichnet.
    " zurückgeben.

    Sie würde auch nicht sehr weiterhelfen da ich mehrere Felder zu aktualisieren habe:

    update AS400.Feld1 = SQL.Feld1, AS400.Feld2 = SQL.Feld2 ....
    from AS400 inner join SQL ....

  4. #4
    Registriert seit
    Mar 2005
    Beiträge
    74
    Ich kenne mich mit OLE DB nicht aus, aber auf der AS400 würde ich folgendes SQL-Statement verwenden:


    Code:
     
    update "ISERIES"."S658E27C"."TESTDT"."KUSTP" A set KUPENA = 'X' 
    where exists (select 1 from DWHTrans.dbo.tImport B
    where A.KUFA = B.FirmaNr and A.KUKNR = B.KunNr and A.KUDKS = B.DebKredKz)

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Die Fehlermeldung ist doch eindeutig:
    Fehlendes Journal.

    Suche mal die OLEDB-Einstellungen für Commit-Level und setze diese auf *NONE (oder das Äquivalent) da die Dateien wohl nicht aufgezeichnet werden.

    Der Update scheint auch für die Dateien, die eigentlich nur gelesen werden, eine Journalaufzeichnung zu benötigen.
    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

Similar Threads

  1. SQL für iSeries - Doku's als Einführung??
    By deni87991 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 03-08-06, 09:00
  2. Neue Möglichkeiten mit SQL auf i5 / iSeries / AS400
    By Fondue in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 28-04-06, 19:40
  3. MS Sql Server + iSeries -> Verbindungsserver
    By reraru in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 20-04-05, 13:07
  4. SQL Verbindungsserver zur iSeries
    By gussi40 in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 01-02-05, 22:13
  5. IBM AS/400 SDK für ActiveX und OLE DB
    By OMS in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 26-02-01, 12:55

Berechtigungen

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