GRANT OWNERSHIP 命令:不允许转让共享数据库的所有权

注意

此行为变更在 2023_06 捆绑包中。

有关捆绑包的当前状态,请参阅 捆绑包历史记录

GRANT OWNERSHIPDROP ROLE 命令的行为如下:

之前:

将数据库的 USAGE 权限授予共享时,可以执行 GRANT OWNERSHIP 命令以将数据库的 OWNERSHIP 权限转让给其他角色。例如:

GRANT USAGE ON DATABASE mydb TO SHARE myshare;
GRANT OWNERSHIP ON DATABASE mydb TO ROLE r2 REVOKE CURRENT GRANTS;
Copy

此外,您可以删除具有共享数据库 OWNERSHIP 权限的角色:

DROP ROLE r2;
Copy
现在:

您可以将共享数据库的所有权转让给其他角色并使用 COPY CURRENT GRANTS 子句,但是不能将共享数据库的所有权转让给其他角色并使用 REVOKE CURRENT GRANTS 子句。如果您尝试这样做,Snowflake 会返回以下错误消息:

Cannot transfer ownership on a database that is granted to a share

为避免出现此错误消息并将 OWNERSHIP 权限转让给其他角色,请从共享中撤消数据库的 USAGE 权限,将数据库的 OWNERSHIP 权限转让给其他角色,并将数据库的 USAGE 权限授予该共享。例如:

REVOKE USAGE ON DATABASE mydb FROM SHARE myshare;
GRANT OWNERSHIP ON DATABASE mydb TO ROLE r2;
GRANT USAGE ON DATABASE mydb TO SHARE r2;
Copy

此外,如果您尝试删除具有共享数据库 OWNERSHIP 权限的角色,Snowflake 会返回以下错误消息,其中包含与应采取的操作有关的说明:

Cannot drop a role that is the owner of one or more shared databases. Run 'SHOW GRANTS TO ROLE <role_name>' to find these shared
databases and transfer their ownership to appropriate role using 'GRANT OWNERSHIP ON DATABASE <database_name> TO ROLE
<target_role_name> COPY CURRENT GRANTS'.

参考号:1181

语言: 中文