[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Jan 2007
    Beiträge
    75

    Nach ExecSQL mehrere Threads aktiv

    Hallo,

    ich habe das Problem, dass sobald ich in einem SQLRPGLE einen EXEC SQL (normaler Select Befehl) ein neuer Thread für meinen Job eröffnet wird (DSPJOB Auswahl 20)....


    Das Problem daran, ist dass der Thread auch beim Beenden des Programmes bestehen bleibt und sobald man mehrere Threads aktiv hat, kann man nicht mehr mit wrklnk aufs QDLS zugreifen....

    Woran könnte das denn liegen bzw. wie kann man das verhindern?

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Hallo,

    bitte ein paar Details!
    Bekommst du beim WRKLNK eine Fehlermeldung?
    Ich schätze ja ==> welche?!

    Ich glaube ehrlich gesagt nicht, dass SQL daran schuld ist.

    lg Andreas

  3. #3
    Registriert seit
    Jan 2007
    Beiträge
    75
    die Fehlermeldung beim "WRKLNK QDLS" ist:

    Operation ist in einem Job mit mehreren Threads nicht zulässig.

    CPFA0A8


    Wenn man sich mit dspjob Auswahl 20 die Threads anschaut, sieht man auch mehrere Threads, welche auf TIMW stehen.

    Diese Threads werden aber erst erstellt, sobald ein Programm aufgerufen wurde, welches SQL verwendet!! (EXEC SQL)

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Dann wären die SQL-Anweisungen die du ausführst interessant. Zusammen mit den Kompile-Paramter (H-Spec, SET OPTION Anweisung usw.)

    Ich kann mich auch irren, da ich mit Threads noch nicht viel am Hut hatte, aber das da ein Thread auf TIMW steht ist doch etwas seltsam?!

  5. #5
    Registriert seit
    Jan 2007
    Beiträge
    75
    hier mal die H-Spec:

    Code:
         H DEBUG(*NO)
         H DECEDIT('0,')
         H DATEDIT(*DMY/)
         H DFTACTGRP(*NO)
         H ACTGRP(*CALLER)
         H OPTION(*NOXREF:*NOSECLVL:*NOEXPDDS:*NOEXT:*NOSHOWSKP)
    SQL-Bedingung ist eigtl. egal welche man ausführt, aber hier mal ein Beispiel:

    Code:
    /free
          exec sql
        select DECRYPT_CHAR(TRIM(LICILI), TRIM(:$SecretKeyP))
            select CAST(DECRYPT_CHAR(LICILI, TRIM(:$SecretKeyP))
             as CHAR(512))
             INTO :$LICI
            FROM ALLICI;
      /end-free
    Das Programm wird mit *INLR = *ON verlassen!!

    achja, als 1. SQL Statement kommt noch :

    Exec SQL set option commit = *none;

  6. #6
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Schaut eigentlich alles normal aus.
    Gib mal bei SET OPTION noch zusätzlich CLOSQLCSR=*ENDMOD an (wobei das sicher auch nicht helfen wird).

    Sobald bei mir ein SQL durchlaufen ist gibt es jedenfalls nur einen Thread.
    Vielleicht findest du im Aufrufstapel (DSPJOB --> 11) oder Offenen Dateien (DSPJOB --> 14) was interessantes?

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Möglicherweise werden die Crypt-Funktionen in eigenen Threads abgearbeitet.
    Hier hilft wohl kein Close-Cursor sondern ggf. nur ein ENDACTGRP.
    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

  8. #8
    Registriert seit
    Jan 2007
    Beiträge
    75
    Die Threads werden aber nicht nur bei Crypt Funktionen, sondern auch bei normalen SQL´s erstellt...

    *ENDMOD hab ich auch schon probiert, hat aber leider auch nichts gebracht...

    Was mir auch noch aufgefallen ist, die Threads werden nur auf unserer Entwicklungsmaschine erzeugt (V5R4)

    Auf anderen Maschinen habe ich das Probem nicht, wobei hier auch eine mit V5R4 dabei war....

    Evtl. irgendein SYSVAL oder fehlendes PTF?

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ggf. ist das Feature für Parallel-Ausführung von SQL's aktiviert und auch verfügbar, auf den anderen Maschinen eben nicht.
    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

  10. #10
    Registriert seit
    Jan 2007
    Beiträge
    75
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Ggf. ist das Feature für Parallel-Ausführung von SQL's aktiviert und auch verfügbar, auf den anderen Maschinen eben nicht.
    wie kann ich das überprüfen?

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... was steht denn im SYSVAL QQRYDEGREE ?

    D*B

    PS: immer dieser Quatsch mit dem CLOSSQLCSR, das bezieht sich alles nur auf logisches schließen. Physisches close lässt sich nur mit disconnect oder mit RCLACTGRP erzwingen.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  12. #12
    Registriert seit
    Jan 2007
    Beiträge
    75
    Zitat Zitat von BenderD Beitrag anzeigen
    ... was steht denn im SYSVAL QQRYDEGREE ?
    SYSVAL QQRYDEGREE = *NONE

Similar Threads

  1. RPG - aktiv ohne Eingabetaste ?
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 25-11-06, 08:43
  2. Threads vs. JVMs
    By Beffe in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 08-11-06, 15:43
  3. Statusinformationen für Leitung XXX, Leitung aktiv
    By cassi in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 16-10-06, 08:10
  4. Threads per RMI
    By andi in forum NEWSboard Java
    Antworten: 4
    Letzter Beitrag: 11-06-05, 17:34
  5. Aktiv wartende Jobs
    By homerun in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 16-04-04, 09:53

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •