Snowflake无法使用Schema问题:授权所有权后仍报错
问题&解决方案
问题详情
创建新用户与新角色并完成角色分配后,执行了以下授权:
GRANT OWNERSHIP ON SCHEMA <DB name>.<schema name> TO ROLE <role name>; GRANT USAGE ON DATABASE <DB name> TO ROLE <role name>;
但执行USE SCHEMA <schema name>;时触发报错:
002043 (02000): SQL compilation error: Object does not exist, or operation cannot be performed.
补充情况:
- 自身创建的Schema可正常使用,但其他用户/角色创建的Schema,即便将所有权授予新角色,仍无法访问
- 执行
show SCHEMAS;仅显示自身创建的Schema,已授权的Schema未出现在列表中
解决步骤
1. 确认会话上下文与角色切换
先切换到目标角色,再指定完整的Schema路径尝试使用:
USE ROLE <role name>; USE SCHEMA <DB name>.<schema name>;
如果省略数据库名直接使用Schema,需先切换到对应数据库:
USE DATABASE <DB name>; USE SCHEMA <schema name>;
2. 补充Schema的USAGE权限
虽然OWNERSHIP理论上包含所有权限,但显式授予USAGE可解决元数据可见性问题:
GRANT USAGE ON SCHEMA <DB name>.<schema name> TO ROLE <role name>;
3. 验证权限配置并刷新
- 检查用户是否已正确关联目标角色:
SHOW GRANTS TO USER <user name>; - 确认角色拥有Schema所有权:
SHOW GRANTS ON SCHEMA <DB name>.<schema name>; - 若刚完成权限配置,执行刷新命令或重新登录会话:
REFRESH PRIVILEGES;
4. 检查会话当前状态
执行以下命令确认当前使用的角色、数据库是否匹配预期:
SELECT CURRENT_ROLE(), CURRENT_DATABASE(), CURRENT_SCHEMA();
内容的提问来源于stack exchange,提问作者Gilo
相关产品推荐
相关产品推荐

