Hola Javier,

He comprobado en una V7R1 y son las mismas autorizaciones.

Saludos

Xavier Estrems

 

De: [email protected]
[mailto:[email protected]] En nombre de Javier Mora
Enviado el: viernes, 26 de agosto de 2016 10:59
Para: 'forum.help400' <[email protected]>
Asunto: Error de ejecución en procedimiento almacenado GET_VIEW_DEPENDENTS

 

Hola a tod@s:

 

a ver si me podéis echar un cable.

 

He encontrado en IT Jungle un procedimiento almacenado que podría ser útil
(para todos). Es algo parecido a un DSPDBR pero es capaz de encontrar las
vistas SQL que están en función de otras vistas y, así, recursivamente hasta
el final.

 

Aquí está el código:

 

CREATE PROCEDURE 

  QGPL.GET_VIEW_DEPENDENTS ( 

    IN DBNAME CHAR(10), 

    IN DBLIBRARY CHAR(10) 

  ) 

DYNAMIC RESULT SETS 1 

LANGUAGE SQL 

SPECIFIC 

  GET_VIEW_DEPENDENTS 

NOT DETERMINISTIC 

READS SQL DATA 

CALLED ON NULL INPUT 

PROGRAM TYPE SUB 

SET OPTION  ALWBLK = *ALLREAD, ALWCPYDTA = *OPTIMIZE, 

    COMMIT = *NONE, CLOSQLCSR = *ENDMOD, 

    DECRESULT = (31, 31, 00), DFTRDBCOL = *NONE, 

    DYNDFTCOL = *NO, DYNUSRPRF = *USER, SRTSEQ = *HEX   

BEGIN 

  DECLARE C1 CURSOR FOR 

  WITH RECURSIVE 

    DEPENDENTS ( CALLLEVEL, DBFFIL, DBFLIB, DBFFDP, DBFLDP ) 

  AS ( 

    SELECT 

      1 AS CALLLEVEL, DBFFIL, DBFLIB, DBFFDP DBFLDP 

    FROM 

      QADBFDEP 

    WHERE 

      DBFFIL = DBNAME AND DBFLIB = DBLIBRARY 

    UNION ALL 

    SELECT 

      CALLLEVEL + 1 AS CALLLEVEL, 

      PR.DBFFIL , PR.DBFLIB , PR.DBFFDP , PR.DBFLDP 

    FROM 

      DEPENDENTS PH 

    INNER JOIN 

      QADBFDEP PR ON ( PH.DBFFDP, PH.DBFLDP ) = ( PR.DBFFIL, PR.DBFLIB ) 

  ) 

  SELECT DISTINCT 

    DBXLFI, DBXTXT, DBFFDP, DBFLDP 

  FROM 

    DEPENDENTS 

  INNER JOIN 

    QADBXREF ON ( DBFFDP, DBFLDP ) = ( DBXFIL, DBXLIB )

  ORDER BY 

    DBFFDP, DBFLDP 

  FOR READ ONLY; 

 

  OPEN C1; 

 

  SET RESULT SETS CURSOR C1; 

END;

 

La he compilado como QSECOFR, aunque creo que no tiene nada que ver con el
error que encuentro, en la biblioteca QGPL. Sin errores. Cuando la ejecuto
como QSECOFR funciona sin problemas, pero cuando lo hago con mi usuario me
aparece el siguiente error:

 

> CALL QGPL.GET_VIEW_DEPENDENTS ('ARTICU', 'TESTER')

 

Estado de SQL: 42501

Código de proveedor: -551

Mensaje: [SQL0551] No tiene autorización para el objeto QADBXREF de
QSYS00144 tipo *FILE. Causa . . . . . :   Se intentó una operación sobre el
objeto QADBXREF en QSYS00144 de tipo *FILE.  Esta operación no puede
realizarse sin la autorización necesaria. Recuperación . . . : Obtenga la
autorización necesaria del responsable de seguridad, del propietario del
objeto o de un usuario con autorización sobre la función QIBM_DB_SECADM. Si
no tiene autorización sobre un archivo lógico, obtenga la autorización sobre
los archivos de base del archivo lógico. Repita la operación.

 

El proceso ha finalizado porque la sentencia resaltada no se ha completado
satisfactoriamente

 

El objeto QADBXREF de QSYS00144 tiene las siguientes autorizaciones:

 

                        Autoriz   -----------Objeto------------ 

Usuario     Grupo       objeto    Opr  Ges  Exist  Alterar  Ref 

*PUBLIC                 USER DEF                                

QSYS                    *ALL       X    X     X       X      X  

 

                         Autoriz   ------------Datos-------------

Usuario     Grupo       objeto    Lect  Adic  Actu  Supr  Ejecut

*PUBLIC                 USER DEF   X                            

 QSYS                    *ALL       X     X     X     X      X   

 

Se aprecia que tengo autorización de lectura pero no la operativa, que
permite utilizar el objeto. He intentado cambiar la autorización de *PUBLIC
pero no me ha dejado el sistema porque el “trabajo de sistema” QDBX144XR lo
tiene bloqueado.

 

Utilizo la versión 7.2 con el nievl de PTFs a junio de este año y tengo un
entorno con *SYSBAS y una ASP independiente (la 144).

 

Me gustaría saber si algún alma caritativa puede comprobar qué
autorizaciones tiene el objeto QSYS/QADBXREF *FILE tanto en versión 7.2 o en
cualquier otra. 

 

Un saludo y gracias,

 

 

Javier Mora

____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a