0 / 0
Go back to the English version of the documentation
在Data Virtualization中查询视图结果时出现SQL0727N错误
Last updated: 2024年11月26日
在Data Virtualization中查询视图结果时出现SQL0727N错误

如果您在高度依赖基于用户组的访问控制的环境中工作,那么可能会迂到 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

原因

当广泛使用基于组的访问控制和授权时,可能会发生此问题。 如果某些其他条件也为 true ,那么当您查询在虚拟表上创建的视图时,会发生此错误。 具体而言,视图创建者对底层表的访问权基于组成员资格。 访问这些视图时,将检查用户对视图的访问权以及视图创建者对视图所基于的底层表的访问权。 由于该视图创建者对底层表的访问依赖于外部身份提供者,因此该视图在等待重新验证时被标记为无效。

有关更多信息,请参阅 执行 DDL 语句或绑定 packages8时使用组特权的限制

解决问题

  1. 如果错误是由于视图被标记为无效,那么具有 "管理员" 角色的用户可以解决导致视图被标记为无效的情况。 当您使用基于组的访问权时,通常管理员必须将 SELECT 特权授予用户,而不是授予组或授予组之外的用户。

    您还可以授予所有角色或所有Data Virtualization用户对对象的公开访问权限,然后使用定义在组上的数据保护规则限制访问权限。 有关详细信息,请参阅 Data Virtualization中的使用数据保护规则管理虚拟数据

  2. 执行更正操作时,对该对象运行 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');

有关更多信息,请参阅下列资源。

  1. ADMIN_REVALIDATE_DB_OBJECTS 过程 - 重新验证无效的数据库对象
  2. auto_reval -“自动重新验证和失效”配置参数
Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more