PDA

View Full Version : Fehler bei benutzerdefinierter Funktion in Teildatei SQLSCHEMAS. ODBC/JDBC



oulbrich
16-06-14, 11:51
Hallo zusammen,

OS Version V7R2M0

ich habe folgendes Problem:
Fehler bei benutzerdefinierter Funktion in Teildatei SQLSCHEMAS. ODBC/JDBC
Bei Auslesen der Schemas über ODBC oder JDBC kommt es im JOB QZDASOINIT zu folgenden Fehlern.

Zeiger für angegebene Position nicht gesetzt.
Zeiger für angegebene Position nicht gesetzt.
Zeiger für angegebene Position nicht gesetzt.
Fehler bei benutzerdefinierter Funktion in Teildatei SQLSCHEMAS.
Fehler bei benutzerdefinierter Funktion in Teildatei SQLSCHEMAS.
Fehler von Auslöserprogramm oder externer Routine erkannt.


Nachricht . . . : Fehler bei benutzerdefinierter Funktion in Teildatei
SQLSCHEMAS.
Ursache . . . . : Beim Aufrufen der benutzerdefinierten Funktion
OBJECT_STATISTICS in Bibliothek SYSIBM ist ein Fehler aufgetreten. Der
Fehler trat beim Aufrufen des zugeordneten externen Programms oder
Serviceprogramms QDBSSUDF2 in Bibliothek QSYS, Programmeingangspunkt bzw.
externem Namen QSQOBSTAT, spezieller Name QSQOBSTAT, auf. Der Fehler trat
bei Teildatei SQLSCHEMAS Datei SQLSCHEMAS in Bibliothek SYSIBM auf. Der
Fehlercode ist 1. Fehlercodes und ihre Bedeutung:
1 -- Das externe Programm oder Serviceprogramm hat SQLSTATE ■■000
zurückgegeben. Die vom Programm zurückgegebene Textnachricht ist: ■■■ .



Kann da einer etwas mit anfangen?

Fuerchau
16-06-14, 11:59
Das Problem tritt häufig nach Release-Wechsel auf der AS/400 auf.
Folgende Aktionen auf der AS/400 beheben das Problem meistens:

ENDHOSTSVR *DATABASE
ENDPJ QUSRWRK QZDASOINIT *IMMED
ENDPJ QUSRWRK QZDASSINIT *IMMED
ENDPJ QSERVER QZDAINIT *IMMED
DLTSQLPKG QGPL/QZDAPKG
STRHOSTSVR *DATABASE
STRPJ QSERVER QZDAINIT

Das DLTSQLPKG funktioniert dann nur, wenn kein User eine ODBC-Verbindung geöffnet hat.

oulbrich
16-06-14, 12:00
Geht das auch im laufenden Betrieb?

oulbrich
16-06-14, 12:28
Habe die Aktionen durchgeführt. Leider keine Erfolg.

Fuerchau
16-06-14, 12:57
Leider hat die IBM bei Schemaabfragen auf UDF's umgestellt.
Wenn ggf. mit einem alten ODBC/JDBC-Treiber auf Schemata zugegriffen wird kann es auch zu Problemen kommen.
Prüfe ob du mit den aktuellen Treibern des V7R2 (mit neuestem Servicepack) zugreifst.

Fuerchau
16-06-14, 13:17
Noch zur Ergänzung:
Ab V6R1 hat die IBM auf Schemaprozeduren umgestellt (warum auch immer).
Der Aufruf der Prozedur erfolgt aus dem ODBC/JDBC-Treiber.
Habe sich die Signaturen von V6R1->V7R1->V7R2 geändert klappt halt der Zugriff nicht mehr.
Treiber bis V5R4 fragen die Schematabellen noch direkt ab und haben daher keine Probleme.

In meiner Clientanwendung habe ich daher 2 Methoden eingebaut:
a) Schemaabfrage
b) eigene Abfrage
Klappt also a) nicht, mache ich einfach mit b) weiter.

Z.B. für Felder (Schemacolumns) mache ich einfach einen "select * from table fetch first 1 rows only" und lade mir die Feldliste des Resultsets.

oulbrich
14-07-14, 11:40
Hallo Fuerchau,

zur Info.

Das Problem konnte heute gelöst werden.

Laut IBM ist folgendes zu tun

es sollte keiner mit SQL arbeiten.

wie von dir beschrieben DLTSQLPKG QGPL/QZDAPKG

zusätzlich löschen der SQLPKG MSACCE* on QGPL

chgjob ccsid(273)

CALL PGM(QSYS/QSQSYSIBM) PARM(FORCE) - lief bei uns ca. 5 Min

Kontrolle
dsppfm qsys2/qsqptabl es darf nur 1 Satz in der Tabelle stehen Hex 00 00 00 01

Danach war der Fehler behoben.


Gruß oulbrich

Fuerchau
14-07-14, 14:06
Das Löschen des QZDAPKG funktioniert häufiger erst nach ENDHOSTSVR *DATABASE, da das Paket durch QZDASOINIT geöffnet sein kann.
Der zusätzlich CALL ist allerdings neu.