Anmelden

View Full Version : Problem mit Objektberechtigung bei RUNSQLSTM



rebe
14-12-06, 08:11
Hallo,

verstehe folgendes Szenario nicht:

Habe mehrere SQL-Befehle in einer Source-Datei:
---------------------------------------------------
CREATE PROCEDURE OPUSTEST.PROG1(in var1 integer,
out var2 integer)
LANGUAGE SQL
MODIFIES SQL DATA
BEGIN
DECLARE at_end INT default 0;
DECLARE lLeID VARCHAR(18);
...
---------------------------------------------------

Ich erstelle die Procedure unter meinem Benutzerprofil REINER mit RUNSQLSTM und COMMIT(*NONE) NAMING(*SQL).
Objekt-
Benutzer Gruppe berechtg.
*PUBLIC *EXCLUDE
*GROUP OPUSPGM *ALL

So jetzt erstelle ich eine zweite Sourcedatei und ändere die Bibliothek
----------------------------------------------------
CREATE PROCEDURE OPUSDATA.PROG1(in var1 integer,
out var2 integer)
LANGUAGE SQL
MODIFIES SQL DATA
BEGIN
DECLARE at_end INT default 0;
DECLARE lLeID VARCHAR(18);
...
----------------------------------------------------

Ich erstelle die Procedure unter meinem Benutzerprofil REINER mit RUNSQLSTM und COMMIT(*NONE) NAMING(*SQL).
Objekt-
Benutzer Gruppe berechtg
*PUBLIC *EXCLUDE
OPUSDATA *ALL

Es gibt das Benutzerprofil OPUSDATA. Wieso bekommt jetzt dieser Benutzer Rechte an diesem Programm?
Nur weil die Bibliothek genauso heißt?

Wenn ich die Prozedur interaktiv erstellen lasse, sieht die Objektberechtigung so aus:
Objekt-
Benutzer Gruppe berechtg.
*PUBLIC *EXCLUDE
*GROUP OPUSPGM *ALL

Da tauscht nicht der Benutzer OPUSDATA auf.

Kann mir jemand dieses Verhalten erklären?
Vielen Dank für Hinweise.

Grüße
Reiner

Fuerchau
14-12-06, 08:49
Die Berechtigung für neue Objekte kann spezifisch an der LIB (CHGLIB) aufgehängt werden.
Default gilt *SYSVAL kann aber auch angepasst werden (Berechtigungsliste, einzelen User usw.).

rebe
14-12-06, 09:11
Danke für den Beitrag.

Vorweg, Systemswert QCRTAUT *CHANGE.

Die Objektberechtigung für die Lib OPUSTEST ist:

Objekt-
Benutzer Gruppe berechtg.
*PUBLIC *ALL
*GROUP OPUSPGM *ALL

Wurde beim Erstellen auch so umgesetzt.

Objektberechtigung für die Lib OPUSDATA

Objekt-
Benutzer Gruppe berechtg.
*PUBLIC *CHANGE
*GROUP OPUSPGM *ALL
READONLY *USE

Wird beim Erstellen so nicht umgesetzt.
Was könnte sonst noch sein?

Reiner

B.Hauser
14-12-06, 11:52
Hallo Reiner,

Dein Problem ist, dass Du SQL-Naming und nicht System-Naming verwendest.
Wenn Du Ssystem-Naming verwendest, gelten auch die System-Richtlinien, bei SQL-Naming die SQL-Richtlinien.

Prüfe doch mal, ob mich Benutzer OPUSDATA nicht sogar der Eigner der Procedure ist.

Schau Dir weiterhin die letzen beiden Parameter (USRPRF und DYNUSRPRF) im Befehl RUNSQLSTM an.

Birgitta

rebe
14-12-06, 12:57
Hallo Birgitta,

ja das ist die Lösung, genauso sieht es aus.
Der Eigner der Prozedur ist sogar OPUSDATA.

Ich dachte mit dem Naming wäre nur die Syntax verbunden wie man Bibliotheken und Objekte trennt und vielleicht noch ein paar Kleinigkeiten mehr. Aber da steckt ja doch einiges mehr dahinter, sogar Berechtigungsvergabe.

Danke für den guten Tipp.

Grüße
Reiner