On m’a récemment demandé comment savoir si un fichier était couvert par des droits SQL sur les zones
J’ai d’abord pensé que la fonction table QSYS2.OBJECT_PRIVILEGES allait me rendre ce service !
donc j’ai lancé cette requête pour analyser mon fichier
Exemple :
SELECT *
FROM TABLE(QSYS2.OBJECT_PRIVILEGES(‘MABASESQL’, ‘CLIENTS’, ‘*FILE’));
et je n’ai pas trouvé l’information dans les zones renvoyées
puis j’ai essayé avec les commandes historiques en sortie de fichier ici DSPOBJAUT
Exemple :
DSPOBJAUT OBJ(MABASESQL/CLIENTS)
OBJTYPE(FILE) OUTPUT(OUTFILE)
OUTFILE(MABASESQL/LSTAUT)
Select * from MABASESQL.lstaut
et la on a le résultat qui l’indique
ZONE OAOBJA à ‘USER DEF’ et une ZONE des DATA ici OAUPD à ‘/’
En résumé
On ne sait pas par SQL, mais on sait faire par une sortie fichier historique
Oui je sais , on peut trouver l’information par des vues spécifiques dans QSYS2 et SYSIBM
Vous avez d’abord la vue SYSIBM.SQLCOLPRIVILEGES mais attention, vous avez toutes les autorisations sur la zone y compris celles qui correspondent à un *CHANGE sur le fichier par exemple.
exemple :
Select * from SYSIBM.SQLCOLPRIVILEGES
where TABLE_SCHEM = ‘MABASESQL’ and TABLE_NAME = ‘CLIENTS’
order by column_name, grantee
Ou mieux la vue QSYS2.COLUMN_PRIVILEGES qui ne contient que les zones avec des autorisations spécifiques
exemple
Select * from QSYS2.COLUMN_PRIVILEGES
where TABLE_SCHEMA = ‘MABASESQL’ and TABLE_NAME = ‘CLIENTS’
j’ai donc fait une RFE pour avoir l’information dans la fonction table QSYS2.OBJECT_PRIVILEGES
Si vous êtes intéressés votez pour moi c’est ici https://2e4ccba981d63ef83a875dad7396c9a0.ideas.aha.io/ideas/RIRP-I-1260
Je vous indiquerais la réponse d’IBM sur le sujet