SQL0727N 查询视图结果时出现错误 Data Virtualization
若您所处的环境高度依赖基于用户组的访问控制,则可能遇到 SQL0727N 错误。
症状
查询视图时返回 SQL0727N 错误消息。
SQL0727N An error occurred during implicit system action type "3".
Information returned for the error includes SQLCODE "-142", SQLSTATE " "
and message tokens "". SQLSTATE=56098
原因
当基于群组的访问控制和授权被广泛使用时,可能会出现此问题。 当查询基于虚拟表创建的视图时,若同时满足某些其他条件,则会发生此错误。 具体而言,视图创建者对底层表的访问权限基于其所属组的成员身份。 访问这些视图时,系统会检查用户对该视图的访问权限,以及视图创建者对该视图所基于的底层表的访问权限。 由于该视图创建者访问底层表依赖于外部身份提供商,因此在等待重新验证期间,该视图被标记为无效。
有关详细信息,请参阅执行DDL语句时对组特权使用的限制或绑定 packages8。
解决问题
- 如果错误是由被标记为无效的视图导致的,具有管理员角色的用户可以解决导致该视图被标记为无效的情况。 当使用基于组的访问权限时,通常管理员必须向用户授予SELECT权限,而不是或除了向组授予权限之外。
您还可以为对象授予所有角色或所有 Data Virtualization 用户的公共访问权限,然后通过在组上定义的数据保护规则来限制访问。
- 当采取纠正措施时,在该对象上
SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS()运行操作将重新验证该对象。 随后对该对象的访问操作成功完成。 此操作需要具有管理员角色的用户 Data Virtualization 执行必要步骤。 执行该程序必须遵循此顺序。
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');
有关更多信息,请参阅下列资源。