GRANT DATABASE ROLE ...TO SHARE¶
向共享授予数据库角色。向数据库角色授予权限可以有效地将对单个数据库的权限添加到共享中,然后可以与一个或多个使用者账户共享该权限。
使用者通过共享创建数据库后,可以将共享数据库角色授予其账户中的角色,以允许拥有这些角色的用户访问共享中的数据库对象。
有关更多详细信息,请参阅 Secure Data Sharing 简介 和 使用共享。
语法¶
GRANT DATABASE ROLE <name>
TO SHARE <share_name>
Copy
参数¶
name
指定数据库角色的标识符(即名称);对于创建角色的数据库来说必须是唯一的。
标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如
"My object"
)。放在双引号内的标识符也区分大小写。如果标识符不是完全限定的(以
db_name.database_role_name
的形式),则该命令将在会话的当前数据库中查找数据库角色。share_name
为从中授予指定数据库角色的共享指定标识符。
使用说明¶
如果向数据库角色授予了任何 DDL 或其他受限权限,则向共享授予数据库角色会失败。数据库角色只能授予对数据库及其对象进行只读活动的权限。
共享的数据库角色不支持未来授权。根据执行的操作,Snowflake 会返回以下错误消息:
将对对象的未来权限授予数据库角色并将数据库角色授予共享:
GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1; GRANT DATABASE ROLE dbr1 TO SHARE myshare;
CopyCannot share a database role with future grants to it.
将数据库角色授予共享,并将对对象的未来权限授予该数据库角色:
GRANT DATABASE ROLE dbr1 TO SHARE myshare; GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1;
CopyCannot grant future grants to a database role that is granted to a share.
使用以下命令来确定将来是否有与数据库角色关联的授权,以避免出现这些错误消息:
SHOW FUTURE GRANTS IN DATABASE parent_db; SHOW FUTURE GRANTS IN shared_schema;
Copy
示例¶
授予数据库 d1
中的数据库角色 dr1
以共享 share1
:
GRANT DATABASE ROLE d1.dr1 TO SHARE share1;Copy