-
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
-
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 !
-
 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
-
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.
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks