[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2006
    Beiträge
    2

    Mehr als SQLGetDiagRec ?

    Beim Zugriff auf DB2 V5R3 über ODBC haben wir momentan ein Problem mit einer unique constraint/key Verletzung.
    Mein eigentliches Problem ist jedoch das ich gerne mehr Informationen über den betroffenen unique constraint/key hätte.

    Provoziere ich einen entsprechenden Insert über den iSeries Navigator bekomme ich eine angenehm umfangreiche Fehlermeldung mit SQL-Status, Vendorencode, Nachricht: [SQL0803] Doppelter Schlüsselwert angegeben, sowie eine umfangreichen "Ursachen" String der unter anderem betroffene Tabelle und Name der Integritätsbedingung beinhaltet.
    Über ODBC scheine ich über SQLGetDiagRec und SQLGetDiagField (auch nach mehrfachem Loop Zugriff um alle Fehler abzuholen) lediglich Zugriff auf die Nachricht d.h. "[SQL0803] Doppelter Schlüsselwert angegeben" nicht jedoch den gewünschten "Ursachen" String zu bekommen.
    Ist dieser nicht über ODBC verfügbar oder wenn doch wie wäre dieser abzufragen?

    Danke im Voraus

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Nach SQL ist über den ODBC-Treiber auch nicht mehr herauszubekommen.
    Um detailierte Meldungen zu empfangen muss man auf ODBC verzichten und die kompletten CA-API's für DB-Zugriff verwenden (OpsNav verwendet nämlich kein ODBC).

    Das habe ich vor längerem schon mal versucht, klappte auch soweit ganz gut, allerdings sind sämtliche Vorteile des ADO/DAO/RDO-Zugriffes weg. Man muss wirklich alles und jedes selber programmieren.

    Wenn man solche Constraint's hat, muss die Anwendung diese auch besser kennen !
    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
    Jul 2002
    Beiträge
    151
    Zitat Zitat von StG
    Beim Zugriff auf DB2 V5R3 über ODBC haben wir momentan ein Problem mit einer unique constraint/key Verletzung.
    Mein eigentliches Problem ist jedoch das ich gerne mehr Informationen über den betroffenen unique constraint/key hätte.

    Provoziere ich einen entsprechenden Insert über den iSeries Navigator bekomme ich eine angenehm umfangreiche Fehlermeldung mit SQL-Status, Vendorencode, Nachricht: [SQL0803] Doppelter Schlüsselwert angegeben, sowie eine umfangreichen "Ursachen" String der unter anderem betroffene Tabelle und Name der Integritätsbedingung beinhaltet.
    Über ODBC scheine ich über SQLGetDiagRec und SQLGetDiagField (auch nach mehrfachem Loop Zugriff um alle Fehler abzuholen) lediglich Zugriff auf die Nachricht d.h. "[SQL0803] Doppelter Schlüsselwert angegeben" nicht jedoch den gewünschten "Ursachen" String zu bekommen.
    Ist dieser nicht über ODBC verfügbar oder wenn doch wie wäre dieser abzufragen?

    Danke im Voraus
    Den gewünschten Ursachenstring solltest Du eigentlich über den ODBC-Trace bekommen. Funktioniert bei mir bestens.
    Gruß Holger

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Holger, das ist keine Lösung zur Laufzeit des Programmes, da dieses selber den Text wohl haben will sondern nur zur Fehlersuche während der Entwicklung.
    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

  5. #5
    Registriert seit
    Jan 2006
    Beiträge
    2
    Danke für die schnelle Antwort auch wenn die erhoften Informationen damit wohl ausser Reichweite rücken
    CA-API und ODBC Trace sind vermutlich keine Alternativen so das ich mir irgend wie anders werde behelfen müssen.

Berechtigungen

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