Por vuestras respuestas deduzco que las autorizaciones sobre QADBXREF son correctas. Por lo tanto, deduzco que el autor del procedimiento almacenado lo probaría con un usuario que tendría, por lo menos, la autorización especial *ALLOBJ.
Echando un vistazo por "ahí" he visto que este archivo forma parte del catálogo de la BBDD y es posible que algunas de las vistas que tiene definidas me puedan servir. Voy a probar. Gracias a todos, Javier De: [email protected] [mailto:[email protected]] En nombre de Javier Mora Enviado el: viernes, 26 de agosto de 2016 10:59 Para: 'forum.help400' 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.

