-
Zugriff SQL Server per RPG
Hallo,
ich möchte über ein RPG Programm auf SQL Server 2022 Datenbanken zugreifen können. Da dies irgendwie über JDBC Treiber möglich sein soll, möchte ich dieses Forum kontaktieren.
Ev. gibt es eine ausführliche Doku zu diesem Thema. Am besten wäre natürlich ein vorhandenes Beispiel zu meinem Problem.
Liebe Grüße aus Oberösterreich
Hermann
-
Schaust Du dir mal Ardgate/Appserver von Dieter Bender an.
https://sourceforge.net/projects/appserver4rpg/
Dieter ist auch hier im Forum anwesend. Ich denke er hilft dir gerne bei Fragen.
kf
-
Ich würde dir da direkt Java empfehlen, da Java sowohl auf DB2 als auch SQL-Server native per JDBC zugreifen kann und zusätzliche Batchjobs wie Ardgate nicht erforderlich sind.
Auch ist die ernsthafte Frage, wie lange ArdGate noch gepflegt wird.
Ich weiß nicht, ob es je einen Nachfolgepflleger gibt.
Auch auf Windows/Linux-Büxen gibts genug Tools, die das sehr gut können, z.B. Talend Open Studio.
Letzteres hat auch grafische Frontends für komplette, automatisierbare, Worklflows.
Und wenn dir dies zu kompliziert ist, kann das letztlich der SQL-Server native ebenso.
Man richtet da einen Verbindungsserver zur DB2 for i ein und kann Daten lesen, schreiben, löschen, ebenso mit simplen SQL-Befehlen.
-
Hallo
Vielen Dank für Eure Antworten! Wir müssen direkt aus einer RPG Anwendung DAten auf einen SQL Express Server 2022 schreiben bzw. lesen (autom. Lagersystem von Kardex). Ich habe am Wochenende im Internet etwas recherchiert und bin auf die Module und Serviceprogramme von Scott Klement gestoßen die auf mich relativ einfach wirken. Nach einigen Versuchen am Weochenende bin ich meiner Meinung nach schon relativ weit nur denke ich, dass mir der korrekt Treiber für die JDBC Verbindung fehlt. Ich habe die Treiber mssql-jdbc-12.4.2.jre11.jar und mssql-jdbc-12.6.3.jre8.jar ausprobiert (ADDENVVAR). Mein Verbindungsstring im RPG Programm sieht wie folgt aus:
conn = JDBC_ConnProp('com.microsoft.sqlserver.jdbc.SQLSer verDriver'
: 'jdbc:sqlserver://AT3DBKADX1:1433'
: prop);
Der Parameter prop enthält lediglich den Namen der Datenbank, den Benutzer und das Kennwort.
Von JAVA bekomme ich dann folgende Meldung retour:
Exception in thread "main" java.lang.UnsupportedClassVersionError: JVMCFRE199E bad major version 55.0 of class=com/microsoft/sqlserver/jdbc/SQLServerDriver, the maximum supported major version is 52.0; offset=6
at java.lang.ClassLoader.defineClassImpl(Native Method) at java.lang.ClassLoader.defineClassInternal(ClassLoa der.java:399)
at java.lang.ClassLoader.defineClass(ClassLoader.java :360)
at java.security.SecureClassLoader.defineClass(Secure ClassLoader.java:154)
at java.net.URLClassLoader.defineClass(URLClassLoader .java:730)
at java.net.URLClassLoader.access$400(URLClassLoader. java:96) at java.net.URLClassLoader$ClassFinder.run(URLClassLo ader.java:1187)
at java.security.AccessController.doPrivileged(Access Controller.java:782)
at java.net.URLClassLoader.findClass(URLClassLoader.j ava:605)
at java.lang.ClassLoader.loadClassHelper(ClassLoader. java:950)
at java.lang.ClassLoader.loadClass(ClassLoader.java:8 95)
at sun.misc.Launcher$AppClassLoader.loadClass(Launche r.java:353)
at java.lang.ClassLoader.loadClass(ClassLoader.java:8 78)
Da ich von JAVA keine Ahnung habe sagen mir diese Protokolleinträge eher nichts!
Ich denke, dass der Verbindungsaufbau schon relativ weit ist und dass nur der entsprechende Treiber (welcher?) fehlt.
Vielen Dank im Voraus
Hermann
-
Dein Java-Program (bzw. die JAR-Files) sind nicht für die Java-Version die du verwendest kompatibel.
Welche Java-Version verwendest du?
Ich würde dir hier auch Ardgate empfehlen.
Java sollte eigentlich nie direkt in Applikationen aufgerufen werden, sondern als Service im Batch laufen.
-
Das Problem ist hier i.d.R. der SQL-Server Express.
Dieser wird häufig als interne Datenbank innerhalb einer Anwendung verwendet und ist von extern gar nicht erreichbar, da der IP-Zugang nicht geöffnet wird.
-
Das Programm kommt nicht mal soweit, sonst wäre die Fehlermeldung ein Timeout oder Connection Refused.
Die Verfügbaren Java-Versionen solltest du in /QOpenSys/QIBM/ProdData/JavaVM/ finden.
Und in der QSH kannst du via java -version prüfen, welche gerade im Zugriff ist.
-
Per QSH kannst du "java -version" aufrufen und du musst dann den passenden Treiber von Microsoft laden:
https://learn.microsoft.com/de-de/sq...cation-support
-
... ganz so einfach ist das leider nicht. MS SQL Server hat Anforderungen was die Mindestversion des Treibers angeht, der Treiber hat Anforderungen, was die Mindestversion von Java angeht, die AS/400 hat Einschränkungen, was die höchste unterstützte Java-Version angeht.
Auch hier hat ArdGate Vorteile, weil der Serverteil auch auf einer beliebigen anderen Büchse im Netz laufen kann. Was den Support angeht, ist ArdGate gegen die anderen Varianten klar im Vorteil, weil die Technologien (RPG - Java) klar entkoppelt sind. Zur Fehleranalyse im Java Teil bracuht man keinerlei AS/400 Knowhow, für Analysen im native Teil braucht man keinerlei Java Knowhow. Zudem verfügt ArdGate über skalierbares logging zur Problemanalyse (ich habe bisher für Support noch nie Zugang zur Büchse gebraucht).
Was Zukunftsfähigkeit angeht: da ist RPG Knowhow eher der Flaschenhals! Aber jeder ist selber seines Glückes Schmied.
Viel Erfolg wünscht D*B
-
Hallo,
und vielen Dank an alle für die Antworten! Wenn es irgendwie möglich ist würden wir gerne aus der RPG Applikation Daten des SQL Servers modifizieren können.
In den Lizenzprogrammen finde folgende installierte Versionen:
5770JV1 *COMPATIBLE Java SE 8 32 Bit
5770JV1 *COMPATIBLE Java SE 8 64 Bit
5770JV1 *COMPATIBLE Java SE 11 64 Bit
In QSH zeigt der Befehl java -version folgendes Log:
$
> java -version
java version "1.8.0_411" Java(TM) SE Runtime Environment (build 8.0.8.25 - pap6480sr8fp25-20240328_01(SR8 FP25))
IBM J9 VM (build 2.9, JRE 1.8.0 OS/400 ppc64-64-Bit Compressed References 20240305_66992 (JIT enabled, AOT enabled)
OpenJ9 - e3126d7
OMR - f2f50a8
IBM - b81b1e2)
JCL - 20240322_01 based on Oracle jdk8u411-b09
$
Vielen Dank
Hermann
-
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.
Similar Threads
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 28
Letzter Beitrag: 19-04-21, 08:09
-
By JIM in forum IBM i Hauptforum
Antworten: 13
Letzter Beitrag: 14-07-08, 07:55
-
By Wandrey in forum NEWSboard Programmierung
Antworten: 21
Letzter Beitrag: 16-05-08, 13:08
-
By epsih2 in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 29-11-04, 10:06
-
By schreibr in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 07-11-01, 07:07
Tags for this Thread
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