Anmelden

View Full Version : CHGQRYA und *JOBCTL



cimbala
30-04-11, 10:00
Hallo *ALL,

ich habe eine SQL- Prozedur aus der ich ein SQLRPGLE aufrufe.
Vor dem Aufruf des Programms muss ich den Befehl CHGQRYA ausführen - dafür rufe ich ein CL auf, welches nur diesen Befehl absetzt. Wenn ich das mache klappt das auch, weil ich die Berechtigung *JOBCTL habe. Ruft ein Anwender von uns die Prozedur auf, bricht diese beim Befehl CHGQRYA ab, da die Berechtigung *JOBCTL fehlt.
Ich habe schon versucht das Programm mit der Option USER(MYUSER) bzw. AUT(*ALL) zu kompilieren - leider ohne Erfolg.

Habt ihr eine Idee, wie ich das CL dazu bringe den BEfehl auszuführen, auch wenn der User die Berechtigung *JOBCTL nicht hat?

Danke für eure Antworten!

Fuerchau
30-04-11, 10:05
CRTCLPGM ... USRPRF(*OWNER)

Der Eigner des Programmes muss dann die Berechtigung haben.

Nur der Interesse wegen:
Wofür brauchst du den CHGQRYA ?

cimbala
30-04-11, 10:14
Hallo,

danke für die schnelle Antwort.
Das hatte ich bereits probiert und ich habe ja die Berechtigung und ich habe das CL auch kompiliert - allerdings ohne Erfolg :(

Weil in dem PRogramm, welches Aufgerufen wird eine Abfrage gestartet wird für die der Optimizer die MEldung ausgibt, dass die Abfrage das Zeitlimit überschreitet.

Fuerchau
30-04-11, 10:40
Dann prüfe doch mal mit DSPPGM wem das Objekt gehört und ob die Einstellung Benutzerprofil *OWNER korrekt übernommen wurde.

Andererseits würde ich den SQL mal über STRDBG genauer analysieren und ggf. vorgeschlagene Indizes anlegen oder sogar das Verfahren (Zugriffsart) prüfen.
Das ist bestimmt effektiver als das Limit zu erhöhen.

Allerdings hatte ich auch schon Zeitangaben jenseits der 10.000 Sekunden, wobei die tatsächliche Abfragedauer dann nur knapp 5 Sekunden war.