我试图将数据库的所有权限授予snowflake中的角色
这包括所有读取、创建、更新和删除模式、阶段、存储集成、表等的能力。
还应该包括将来在数据库中创建的任何对象。
grant all on database test to developer;
这只授予数据库的视图,而不是模式或数据库中的任何其他对象
不幸的是,在Snowflake中,没有这样的命令可以通过单个命令授予所有访问权限。
即使使用所有特权命令,您也必须对对象授予一个使用特权才能有效。
Schema Privileges的文档中也提到了。
对于将来的授权,您可以尝试在模式和数据库级别执行以下命令
模式水平
grant usage on database SAMPLEDATABASE1 to role testrole12;
grant usage on schema SAMPLEDATABASE1.TEST to role testrole12;
grant select on future tables in schema SAMPLEDATABASE1.TEST to role testrole12;
grant role testrole12 to user SUJANT3;
数据库级
grant usage on database SAMPLEDATABASE1 to role testrole12;
grant usage on future schemas in database SAMPLEDATABASE1 to role testrole12;
grant select on future tables in database SAMPLEDATABASE1 to role testrole12;
grant role testrole12 to user SUJANT3;
没有一个命令可以影响数据库下的所有对象,但是您可以为每个对象运行这些SQL集:
GRANT ALL ON ALL schemas in database <DB> TO ROLE <role>;
GRANT ALL ON ALL TABLES IN SCHEMA <db.schema> TO ROLE <role>;
同样适用于未来的拨款:
grant all on future schemas in database <DB> TO ROLE <role>;
grant all on future tables in schema <db.schema> to ROLE <role>;
这也可以扩展到视图和其他对象。
听起来你想授予所有权?每个对象只能有一个所有者,所以我建议您只在适当的时候使用:
GRANT OWNERSHIP ON DATABASE TEST
TO DEVELOPER
COPY CURRENT GRANTS
;
注意:复制当前授予保留当前的特权,除了所有权转移。否则,将删除所有已存在的权限。