DROP DATABASE ROLE¶
从系统中移除指定的数据库角色。
语法¶
DROP DATABASE ROLE [ IF EXISTS ] <name>
参数¶
name
指定数据库角色的标识符(即名称);对于创建角色的数据库来说必须是唯一的。
标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如
"My object"
)。放在双引号内的标识符也区分大小写。如果标识符不是完全限定的(以
db_name.database_role_name
的形式),则该命令将在会话的当前数据库中查找数据库角色。
使用说明¶
已删除的数据库角色无法恢复;只能重新创建。
对于已删除的数据库角色,其拥有的任何对象的所有权都将转移给执行 DROP DATABASE ROLE 命令的角色。若要将其中每个对象的所有权转移给不同的数据库角色,请使用 GRANT OWNERSHIP ...COPY CURRENT GRANTS 的章节。
如果某个数据库角色作为授权方或被授权方具有未来权限,则该数据库角色只能由具有 MANAGE GRANTS 权限的角色的用户删除。
删除数据库角色时,也会移除将数据库角色命名为授权方或被授权方的所有当前和未来授权。
查询 GRANTS_TO_ROLES Account Usage 视图,以检索将指定数据库角色命名为授权方或被授权方的权限授予:
SELECT * FROM snowflake.account_usage.grants_to_roles WHERE grantee_name = upper('<database_name>.<db_role_name>') OR granted_by = upper('<database_name>.<db_role_name>');
以下示例检索
d1.dr1
是授权方或被授权方的权限授予:SELECT * FROM snowflake.account_usage.grants_to_roles WHERE grantee_name = upper('d1.dr1') OR granted_by = upper('d1.dr1');
示例¶
DROP DATABASE ROLE d1.dr1;