You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake为角色授予Schema未来OWNERSHIP权限时报错

问题解决:未来表OWNERSHIP权限重复报错

排查方向

  • 权限继承的隐藏记录:直接查询目标角色RL_DEV的未来权限没结果,但该角色可能继承了其他角色的同类未来OWNERSHIP权限。用以下SQL排查所有相关权限:
    SELECT * 
    FROM TABLE(INFORMATION_SCHEMA.APPLICABLE_ROLES(ROLE_NAME => 'RL_DEV'))
    JOIN INFORMATION_SCHEMA.FUTURE_GRANTS 
    ON GRANTEE = APPLICABLE_ROLE_NAME
    WHERE OBJECT_TYPE = 'TABLE' 
      AND PRIVILEGE = 'OWNERSHIP'
      AND SCHEMA_NAME = 'CON' 
      AND DATABASE_NAME = 'DEV';
    
  • 元数据同步延迟:Snowflake元数据偶尔会有缓存延迟,执行刷新后再查询:
    ALTER SESSION REFRESH;
    SELECT * FROM INFORMATION_SCHEMA.FUTURE_GRANTS 
    WHERE GRANTEE = 'RL_DEV' 
      AND OBJECT_TYPE = 'TABLE' 
      AND PRIVILEGE = 'OWNERSHIP'
      AND SCHEMA_NAME = 'CON' 
      AND DATABASE_NAME = 'DEV';
    

解决步骤

  1. 删除重复权限:如果上述查询找到重复记录,执行撤销命令(替换[找到的角色名]为实际角色):
    REVOKE OWNERSHIP ON FUTURE TABLES IN SCHEMA dev.con FROM ROLE [找到的角色名];
    
    注意:若权限来自继承角色,需确认撤销后不会影响其他业务。
  2. 重新执行授权:删除重复权限后,再次运行你的授权命令:
    GRANT OWNERSHIP ON FUTURE TABLES IN SCHEMA dev.con TO ROLE RL_DEV;
    
  3. 限定授权范围(可选):如果不需要全Schema的未来表所有权,可添加更精确的条件避免冲突:
    GRANT OWNERSHIP ON FUTURE TABLES IN SCHEMA dev.con 
    TO ROLE RL_DEV
    WITH GRANT OPTION; -- 按需添加该选项
    

关键注意点

OWNERSHIP权限是排他性的,同一Schema下同一对象类型的未来OWNERSHIP只能授予一个角色(或通过继承链传递),必须确保没有其他角色持有该权限。

内容的提问来源于stack exchange,提问作者BalajiAWS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 05:52:05