[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2005
    Beiträge
    76

    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

  2. #2
    Registriert seit
    Jan 2007
    Beiträge
    925
    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

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.385
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Apr 2005
    Beiträge
    76
    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

  5. #5
    Registriert seit
    Nov 2020
    Beiträge
    366
    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.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.385
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Nov 2020
    Beiträge
    366
    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.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.385
    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
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.310
    ... 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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #10
    Registriert seit
    Apr 2005
    Beiträge
    76
    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

  11. #11
    Registriert seit
    Mar 2009
    Beiträge
    54
    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



  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.385
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Lesender Zugriff auf Redis per RPG
    By dschroeder in forum NEWSboard Programmierung
    Antworten: 28
    Letzter Beitrag: 19-04-21, 08:09
  2. Scott Klement - RPG-Zugriff auf SQL-Server
    By JIM in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 14-07-08, 07:55
  3. SQL Zugriff von iSeries auf Microsoft SQL-Server
    By Wandrey in forum NEWSboard Programmierung
    Antworten: 21
    Letzter Beitrag: 16-05-08, 13:08
  4. AS/400 Zugriff via Linked Server unter SQL Server 2000
    By epsih2 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 29-11-04, 10:06
  5. Zugriff SQL-Server auf iSeries400
    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
  •