如何查询Snowflake数据库对象的未来所有权配置?
查看Snowflake数据库对象的未来所有权配置
要提前确定Snowflake中未来创建对象的所有者,可通过以下两种方式查询已配置的未来所有权规则:
1. 查询系统视图
Snowflake提供了多个账户级系统视图,专门记录未来权限的授予情况:
查询数据库级的未来所有权配置
针对你提到的DB数据库,执行以下SQL查看所有未来对象的所有权授予:
SELECT GRANTEE_NAME, PRIVILEGE_TYPE, OBJECT_TYPE AS FUTURE_OBJECT_TYPE, DATABASE_NAME FROM SNOWFLAKE.ACCOUNT_USAGE.DATABASE_FUTURE_GRANTS WHERE DATABASE_NAME = 'DB' AND PRIVILEGE_TYPE = 'OWNERSHIP';
结果中的GRANTEE_NAME字段就是未来对应类型对象的所有者角色。
查询Schema级的未来所有权配置
如果是针对特定Schema的未来对象配置,可查询SCHEMA_FUTURE_GRANTS:
SELECT GRANTEE_NAME, PRIVILEGE_TYPE, OBJECT_TYPE AS FUTURE_OBJECT_TYPE, DATABASE_NAME, SCHEMA_NAME FROM SNOWFLAKE.ACCOUNT_USAGE.SCHEMA_FUTURE_GRANTS WHERE DATABASE_NAME = 'DB' AND SCHEMA_NAME = 'PUBLIC' -- 替换为目标Schema AND PRIVILEGE_TYPE = 'OWNERSHIP';
2. 使用DESCRIBE命令查看对象的未来权限
直接针对数据库或Schema执行DESCRIBE命令,结果中会包含FUTURE_GRANTS条目:
查看数据库的未来权限
DESCRIBE DATABASE DB;
在返回的结果集中,找到property为FUTURE_GRANTS的行,value列会列出所有被授予未来所有权的角色及对应的对象类型。
查看Schema的未来权限
DESCRIBE SCHEMA DB.PUBLIC;
同样在结果中查找FUTURE_GRANTS条目,即可获取该Schema下未来对象的所有者配置。
内容的提问来源于stack exchange,提问作者NIKHIL SUTHAR
相关产品推荐
相关产品推荐

