Wir programmieren unter Windows mittels Visual C++ 6er Studio und greifen via ODBC Treiber auf die DB2 Datenbank einer iSeries zu.

Ein großer Teil der Datenbankzugriffe scheint problemlos zu funktionieren. Inserts, Updates, Selects alles kein Problem. Bis in der Where-Clause des Selects ein Umlaut vorkommt.

Das Symptom auf Windowsseite: Es kommt einfach keine Antwort zurück. Auch bei winzig kleinen Tabellen wartet man >10 min.
Das Symptom auf der AS/400: Prozessorlast steigt auf 50% an. Man kann den Job nur killen.

Anschließend sieht man im Trace (wir schreiben Select und Antwort immer weg):

Code:
 ErrorMessage:     SQL call failed.
  ErrorCode:        5
  VendorError1:     8405
  VendorError2:     1
    
  VendorMessage1:   08S01
  VendorMessage2:   [IBM][System i Access ODBC Driver]Communication link failure. comm rc=8405 - CWBCO1047 
    ->- The System i server application  disconnected the connection
 Sql-Error: 25.03. 10:36:00:406: SELECT DISTINCT ORTE.LAND, ORTE.POSTLEITZAHL, ORTE.ORTSNAME, ORTE.GTB_NR,
   -> ORTE.GEBIETS_NR, ORTE.X_KOORDINATE, ORTE.Y_KOORDINATE, ORTE.ORTSKLASSE_BSL, ORTE.ORTSKLASSE_DEGT, ORTE.BHFSTUECKGUT,
   -> ORTE.GEMSCHLUESSEL, ORTE.ORTSNUMMER, ORTE.ORT, ORTE.ORTSTEIL, ORTE.KENNZEICHEN, ORTE.ORTSNAME_NORM, 
   ->ORTE.ORTSTEIL_NORM, ORTE.ORT_NORM, ORTE.ROLLGELD_BSL, ORTE.GEM_SCHLUESSEL_LAND, ORTE.GEM_SCHLUESSEL_BEZIRK,
   -> ORTE.GEM_SCHLUESSEL_KREIS, ORTE.GEM_SCHLUESSEL_GEMEINDE, ORTE.SATZKENNUNG, ORTE.ORTSGROESSE, ORTE.MATRIX_INDEX,
   -> ORTE.BREITENGRAD, ORTE.LAENGENGRAD, ORTE.MANUELL_KZ, ORTE.ORTSTYP FROM ORTE WHERE LAND = 'DE' AND ORT 
   ->= 'Nü' ORDER BY LAND, POSTLEITZAHL, ORT
Wobei, der Disconnect erst durch das Abbrechen des Jobs kommt. Vorher passiert gar nichts.

Interessanterweise, diese Umlaute sind mittels der Applikation erfasst worden und immer noch lesbar. Nur im Select selbst (where) taucht das Problem auf.

Als ODBC Treiber wurde der iSeries ACCESS Treiber verwendet.
Das Problem ist auf unsere DB2 Windowsdatenbank nicht nachvollziehbar.

Jemand eine Idee?