Anmelden

View Full Version : DB2 DRDA Verbindung zwischen iSeries und Windows2003



gathomy
04-03-05, 16:21
Ich versuche, die iSeries als Requester (AR) zu definieren und auf eine DB2 UDB unter Windows zuzugreifen.

Ausgangspunkt:
OS/400 V5R2
Windows2003 mit UDB 8.2 Express Edition (Trial Version)

DB2 Definition:
DB Server Name: XSRVAS
IP Adresse des Servers: 134.128.75.57
Name des Exemplars(Instanz): DB2
Portnummer: 50000
Name der Datenbank: SAMPLE
Name der Tabelle: SALES

WRKRDBDIRE Eintrag
Datenbankname : XSRVAS
IP-Adresse: 134.128.75.57 (kein Eintrag im DNS)
Portnummer: 50000
Autorisierung: *USRIDPWD (*ENCRYPTED funktioniert nicht )

Benutzer: DB2ADMIN

Ich starte STRSQL ( Job CCSID = 273)

CONNECT TO "XSRVAS" USER "DB2ADMIN" USING ******

Es wird gemeldet, daß die Verbindung zur relationalen Datenbank XSRVAS besteht. Das klingt erst mal gut.

Doch nach meiner Kenntniss heißt die Datenbank doch SAMPLE.

Jeder Versuch eines SELECT schlägt fehl mit "DRDA Protokollfehler".

SELECT * FROM SAMPLE.SALES
SELECT * FROM SALES

Auch erhalte ich mit F4 keine Tabellen Auswahl.

Was mache ich verkehrt ?

Fuerchau
04-03-05, 18:56
Der Name der als Datenbank angezeigt wird ist der RDB-Name des WRKRDBDIRE.
Vielleicht solltest du vorher über F13, 1 Sitzungsattribute, die Namenskonvention auf *SQL umstellen sowie die Commit-Steuerung auf *CS oder *CHG.
F4 funktioniert evtl. nur bei AS/400-DB's.

Ein DRDA-Fehler deutet auf Inkompatibilität des Protokolls hin. Im Joblog stehen vielleicht weitere Hinweise.

gathomy
07-03-05, 11:44
Ich habe die Lösung !

Nachdem ich erstmal die Verbindung mittels ODBC von einem Client aus getestet habe, wußte ich das der Server in Ordnung ist. Bei der ODBC Quelle mußte ich für die Verbindung die Datenbank SAMPLE angeben, nicht den Verwaltungsserver XSRVAS.

Daraus schlußfolgernd habe ich nochmal den Eintrag im WRKRDBDIRE geändert. Als Relationale Datenbank habe ich nun SAMPLE statt XSRVAS angegeben.

Den STRSQL habe ich mit Namenkonvention *SQL aufgerufen.

CONNECT TO SAMPLE USER DB2ADMIN USING ''

Es folgte die Meldung "SQL Fehler". Und daraus hatte ich bisher abgeleitet, daß diese Verbindung nicht funktionieren kann. Das war mein Fehler !
Die Fehlermeldung besagt nämlich, daß deshalb andere SQL Befehle durchaus funktionieren können. Und der SELECT tat es auch:

SELECT * FROM ADMINISTRATOR.SAMPLE

Auch der CREATE TABLE funktionierte.

Nun muß ich nur noch analysieren, was es mit dem SQL Fehler beim CONNECT auf sich hat.

Danke für die Unterstützung.

Fuerchau
08-03-05, 10:36
Auch der gemeldete SQL-Fehler muss im Joblog weitere Erklärungen haben.

gathomy
14-03-05, 09:17
Nachdem ich jetzt eine eigene Datenbank angelegt habe, bekomme ich beim CONNECT auch keine Fehlermeldung mehr. :)

Aber jetzt habe ich ein neues Problem. Mit dem Benutzer db2admin habe ich über den iSeries Client ( STRSQL) alle Rechte. Dann habe ich einen neuen Benutzer angelegt, der nur das Recht SELECT an der Datenbank hat. Zuerst habe ich diesen Benutzer über den Windows Client via ODBC getestet und es funktioniert wie erwartet.
Wenn ich mit dem gleichen Benutzer über den iSeries Client auf die Datenbank zugreife und einen SELECT ausführe, dann bekomme ich die Meldung:

Syntaxfehler oder ungültiger Zugriff - SQLSTATE 42501, SQLCODE -551,

Der Fehlercode bedeutet ein Berechtigungsproblem.
Was muß ich im Fall eines iSeries Clients noch tun ?

Fuerchau
14-03-05, 09:50
Eigentlich nur sicherstellen, dass beim Connect das richtige Profil verwendet wird.

gathomy
14-03-05, 10:14
Habe das Problem gefunden !!!!

Für einen Zugriff vom iSeries Client (STRSQL) muß für den Benutzer auf der Datenbank folgende Paket Berechtigung hinzugefügt werden:

QSQL400.QSQL2011 BIND=ja EXECUTE=ja CONTROL=nein