GRANT OWNERSHIP 命令:不允许转让共享数据库的所有权¶
GRANT OWNERSHIP 和 DROP 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