È possibile riscontrare errori SQL0727N se si lavora in un ambiente che dipende fortemente dal controllo degli accessi basato sui gruppi di utenti.
Sintomi
Viene restituito un messaggio di errore SQL0727N durante l'interrogazione di una vista.
SQL0727N An error occurred during implicit system action type "3".
Information returned for the error includes SQLCODE "-142", SQLSTATE " "
and message tokens "". SQLSTATE=56098
Cause
Questo problema può verificarsi quando il controllo dell'accesso e l'autorizzazione basati sui gruppi sono ampiamente utilizzati. Questo errore si verifica quando si interrogano le visualizzazioni create sulle tabelle virtuali se anche alcune altre condizioni sono vere. In particolare, l'accesso del creatore della vista alla tabella sottostante si basa sull'appartenenza al gruppo. Quando si accede a queste viste, viene selezionato l'accesso dell'utente alla vista e l'accesso del creatore della vista alla tabella sottostante su cui si basa la vista. Poiché l'accesso del creatore della vista alla tabella sottostante si basa su un provider di identità esterno, la vista viene contrassegnata come non valida mentre è in attesa di riconvalida.
Per ulteriori informazioni, consultare Limitazioni sull'utilizzo dei privilegi di gruppo durante l'esecuzione di istruzioni DDL o bind packages8.
Risoluzione del problema
- Se l'errore è il risultato di una vista contrassegnata come non valida, un utente con il ruolo Admin può risolvere la condizione che ha causato la contrassegno della vista come non valida. Quando si utilizza l'accesso basato sui gruppi, generalmente un amministratore deve concedere i privilegi SELECT all'utente piuttosto che o in aggiunta al gruppo.
È anche possibile concedere l'accesso pubblico agli oggetti per tutti i ruoli o per tutti gli utenti Data Virtualization e quindi limitare l'accesso utilizzando le regole di protezione dei dati definite sui gruppi. Per ulteriori informazioni, vedere Gestione dei dati virtuali con regole di protezione dei dati in Data Virtualization.
- Quando viene eseguita l'azione correttiva, l'esecuzione di
SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS()
su tale oggetto riconvalida l'oggetto. L'accesso successivo all'oggetto viene eseguito correttamente. Questa procedura richiede un utente di Data Virtualization con ruolo di amministratore per eseguire i passi necessari. L'esecuzione della procedura deve seguire questa sequenza.
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');
Per ulteriori informazioni, consultare le risorse riportate di seguito.