Vous pouvez rencontrer des erreurs SQL0727N si vous travaillez dans un environnement qui dépend fortement du contrôle d'accès basé sur des groupes d'utilisateurs.
Symptômes
Un message d'erreur SQL0727N est renvoyé lors de l'interrogation d'une vue.
SQL0727N An error occurred during implicit system action type "3".
Information returned for the error includes SQLCODE "-142", SQLSTATE " "
and message tokens "". SQLSTATE=56098
Causes
Cette question peut se produire lorsque le contrôle d'accès et l'autorisation basés sur des groupes sont largement utilisés. Cette erreur se produit lorsque vous interrogez des vues créées sur des tables virtuelles si certaines autres conditions sont également vraies. En particulier, l'accès du créateur de la vue au tableau sous-jacent est basé sur l'appartenance à un groupe. Lorsque vous accédez à ces vues, l'accès de l'utilisateur à la vue et l'accès du créateur de la vue à la table sous-jacente sur laquelle la vue est basée sont vérifiés. Étant donné que l'accès du créateur de la vue à la table sous-jacente repose sur un fournisseur d'identité externe, la vue est marquée non valide alors qu'elle est en attente de revalidation.
Pour plus d'informations, voir Restrictions sur l'utilisation des privilèges de groupe lors de l'exécution d'instructions DDL ou de packages8.
Résolution du problème
- Si l'erreur est due à une vue marquée non valide, un utilisateur doté du rôle Admin peut résoudre la condition qui a provoqué la non-validité de la vue. Lorsque vous travaillez avec un accès basé sur des groupes, généralement un administrateur doit accorder des privilèges SELECT à l'utilisateur plutôt qu'à ou en plus du groupe.
Vous pouvez également accorder un accès public à vos objets pour tous les rôles ou tous les utilisateurs de la Data Virtualization, puis restreindre l'accès à l'aide de règles de protection des données définies pour les groupes. Pour plus d'informations, reportez-vous à la section Gouverner les données virtuelles à l'aide de règles de protection des données dans la section Data Virtualization.
- Lorsque la mesure corrective est prise, l'exécution de
SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS()
sur cet objet revalide l'objet. L'accès ultérieur à l'objet aboutit ensuite. Cette procédure nécessite un utilisateur de Data Virtualization ayant un rôle d'administrateur pour exécuter les étapes nécessaires. L'exécution de la procédure doit suivre cette séquence.
CALL SYSHADOOP.BIG_SQL_SERVICE_MODE('ON');
CALL SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS(object-type, object_schema, object_name);
CALL SYSHADOOP.BIG_SQL_SERVICE_MODE('OFF');
Pour plus d'informations, voir les ressources suivantes :