Snowflake动态表操作遇仓库缺失错误,ACCOUNTADMIN权限仍报错
针对你遇到的动态表刷新报错,可按以下步骤逐一排查解决:
确认仓库存在性与状态
执行SHOW WAREHOUSES LIKE 'COMPUTE_WH';检查仓库是否被误删除或重命名。若仓库存在,用DESCRIBE WAREHOUSE COMPUTE_WH;查看状态,若为SUSPENDED,执行ALTER WAREHOUSE COMPUTE_WH RESUME;恢复运行。校验动态表的仓库绑定配置
查看动态表的关联仓库:DESCRIBE DYNAMIC TABLE db_one.schema_one.table_one;,若绑定的仓库无效,执行ALTER DYNAMIC TABLE db_one.schema_one.table_one SET WAREHOUSE = '<可用仓库名>';重新指定。验证角色权限(即使是ACCOUNTADMIN)
执行SHOW GRANTS ON WAREHOUSE COMPUTE_WH;,确认ACCOUNTADMIN拥有该仓库的USAGE和OPERATE权限,避免权限被意外回收。检查会话级仓库设置
查看当前会话默认仓库:SELECT CURRENT_WAREHOUSE();,若不是目标仓库,执行USE WAREHOUSE <可用仓库名>;切换后,再尝试刷新动态表:ALTER DYNAMIC TABLE db_one.schema_one.table_one REFRESH;。刷新元数据缓存
若存在元数据缓存异常,重新登录会话或执行ALTER SESSION REFRESH;刷新会话元数据后重试操作。批量修复多动态表问题
若多个动态表受影响,可生成批量更新脚本统一修改仓库配置:SELECT 'ALTER DYNAMIC TABLE ' || TABLE_CATALOG || '.' || TABLE_SCHEMA || '.' || TABLE_NAME || ' SET WAREHOUSE = ''<可用仓库名>'';' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'DYNAMIC TABLE' AND TABLE_SCHEMA = 'schema_one';生成语句后批量执行即可。
内容的提问来源于stack exchange,提问作者Sumit Kumar

