View Full Version : Zugriff SQL Server per RPG
Java = Major version
22 = 66
21 = 65
20 = 64
19 = 63
18 = 62
17 = 61
16 = 60
15 = 59
14 = 58
13 = 57
12 = 56
11 = 55
10 = 54
9 = 53
8 = 52
7 = 51
6 = 50
Umgebungsvariable muss gesetzt werden:
JAVA_HOME=/QOpenSys/QIBM/ProdData/JavaVM/jdk11/64bit
Ggf. musst du halt auf die JRE 8 64-Bit runtergehen um die Java-Kompatibilität zu erreichen.
Da die IBM sehr nachlässig ist, was neue Versionen angeht ist das immer wieder ein Problem der Kompatibilität.
Dasselbe gilt dann ebenso für die JDBC-Version des SQL-Servers.
Unabhängig davon solltest du mal auf einem Windows-Client z.B. mit Squirrel versuchen, ob du den SQL-Server Express überhaupt erreichen kannst. Sonst ist das sowieso alles vergebene Mühe.
Tja, und dann empfehle ich dir trotzdem eine Client-Lösung (Java, C#, u.v.m.).
Man kann vom Client eine DTAQ auch per SQL auslesen. Damit bekommt man einen Auftrag von einem RPG-Programm. Der Client führt die Aktion aus und schreibt eine passende Information in die DB2.
Dies kann genauso gut auch ein Trigger, der die DTAQ schreibt. Und die Antwort per Insert/Update kann auch ein Trigger ggf. weiter verarbeiten.
Wie immer gibts 1000 Möglichkeiten. Ich würde mich da nicht auf RPG fixieren, da das irgendwann niemand mehr warten kann. Insbesonders bei Release-Updates von JVM, JDBC und SQL-Server.
So die Verbindung konnte aufgebaut werden! Leider war in der SQL Serverkonfiguration das "TCP/IP Protokoll for Server ... disabled". Warum unser Partner dies so eingestellt hat ist mir ein Rätsel. Die Verbindung konnte mit der jdk11 Java Version aufgebaut werden.
ADDENVVAR ENVVAR(JAVA_HOME) VALUE('/QOpenSys/QIBM/ProdData/JavaVM/jdk11/64bit') REPLACE(*YES)
ADDENVVAR ENVVAR(CLASSPATH) VALUE('/java/jdbc/SQLServer/mssql-jdbc-12.6.3.jre11.jar')
aufgebaut werden.
Mal schauen wie der nächste Schritt - dem Lesen einer Tabelle - vonstatten geht.
Vielen Dank für eure hilfreichen Informationen
Hermann
Beispiel
https://www.scottklement.com/presentations/
Accessing External Databases from RPG (https://www.scottklement.com/presentations/#EXTERNALDB)
Wie oben schon gesagt, ein Express-Server ist eigentlich nie von außen erreichbar. Es ist auch lizenzrechtlich ggf. ein Problem, wenn von außerhalb der Anwendung auf die DB zugegriffen wird.
Wichtig zu wissen ist auch: Eine Express-DB kann nur max. 10 GB groß werden.
Aber das wisst ihr ja wohl schon alles.
Ich möchte mich noch einmal bei allen für die Unterstützung bei einer Lösungsfindung bedanken. Letztendlich sind wir doch bei der Lösung von Scott Klement gelandet wobei hier mit JDBC APIs gearbeitet wird. Die Test sind äußerst positiv verlaufen, wobei SQL Datenbanken gelesen, aktualisiert, neu Datensätze geschrieben und sogar Datensätze aus der SQL Express Datenbank gelöscht wurden. Für uns war dies der einfachste Weg Daten für das Lagersystem bereitzustellen und Daten zu aktualisieren. Die Hybridlösung von API und SQL Anweisungen ist aus unserer Sicht die beste Lösung für RPG Programmierer gewesen. Zudem mussten wir uns kaum mit JAVA auseinandersetzen was für uns, bitte nicht falsch verstehen, sehr sehr positiv war.
Danke
Hermann
Dann wäre im Endeffekt auch Ardgate die Lösung gewesen.
Hier kannst du dann native mit SQL via RPG auf externe Datenbanken zugreifen.
Einziges Manko, man muss mit Prepare arbeiten, kann aber ansonsten alles mit Hostvariablen verwenden.