授予 EXTEND 角色

如果 IFX_EXTEND_ROLE 配置参数设置为 ON1,仅持有 EXTEND 角色的用户(以及还持有对数据库的 Resource 权限和对用于编写 UDR 的编程语言的 Usage 权限的用户)可创建或删除以 C 或 Java™ 外部语言编写的 UDR,这些语言可支持共享库。

数据库服务器管理员(DBSA),缺省情况下用户 gbasedbt,可以 GRANT EXTEND TO user-list 语句将 EXTEND 角色授予一个或多个用户或授予 PUBLIC。

由于 EXTEND 为内建的角色,所以 SET ROLE 语句不需要 EXTEND 角色来使之生效。用户持有 EXTEND 角色就足够了,无需使用 SET ROLE 来启用它。

例如,假设用户 max 持有对数据库的 Resource 权限,且已经通过 GRANT USAGE ON LANGUAGE C 语句被授予了对 C 语言的 Usage 权限。下列语句将 EXTEND 角色授予用户 max
GRANT EXTEND TO 'max';

此语句使得用户 max 能够创建或删除以 C 语言编写的 UDR,而不要求 max 发出 SET ROLE EXTEND 语句。(此处引号在授权标识符 max 中保持小写字母。)然而,在用户 max 可创建或删除以 Java 语言编写的 UDR 之前,有效的 GRANT USAGE ON LANGUAGE JAVA 语句的 TO 子句必须指定或者 'max',或者 PUBLIC,或者 max 持有的用户定义的角色的名称(以及 max 已经使用 SET ROLE 语句来指定为他的当前角色)。

在不需要此安全特性的数据库中,DBSA 可通过在 ONCONFIG 文件中将 IFX_EXTEND_ROLE 配置参数设置为 OFF0 来禁用对谁可创建或删除外部 UDR 的限制。当 IFX_EXTEND_ROLE 设置为 OFF0时,任何持有 Resource 权限的用户(以及还持有对以其编写该 UDR 的编程语言的 Usage 权限的用户)都可创建或删除外部 UDRs。

对任何要创建或删除外部 UDR 的用户而言,对数据库的 Resource 权限和对外部语言的 Usage 权限都是需要的,不管 IFX_EXTEND_ROLE 配置参数设置如何,或该用户是否持有 EXTEND 角色。用户 gbasedbt、DBA 或任何已经获得 Usage 权限 WITH GRANT OPTION 的用户都可将对 SPL、C 和 Java 语言的 Usage 权限授予 PUBLIC。要获取关于授予 Resource 权限的信息,请参阅 数据库级权限。要获取关于授予对编程语言的 Usage 权限的信息,请参阅 语言级权限