Snowflake仪表盘执行后Context Selector自动取消仓库选择致查询失败
Snowflake仪表盘仓库上下文自动重置问题解决指南
问题现象
创建的资源监控仪表盘在选择角色/仓库执行后,3-4秒内仓库Context Selector自动重置为「未选择仓库」,触发报错:
000606 (57P03): No active warehouse selected in the current session. Select an active warehouse with the 'use warehouse' command
相同角色/仓库在独立SQL工作表中可正常运行,临时修复方法仅单次生效,无法长期解决。
解决步骤
1. 锁定仪表盘上下文
- 进入仪表盘编辑模式,点击顶部上下文选择器旁的锁定图标,开启「锁定仪表盘上下文」。
- 选择目标仓库和角色后保存仪表盘,执行时上下文将保持锁定状态,不会自动重置。
2. 统一查询的上下文继承设置
- 打开仪表盘内每个查询的编辑界面,检查右上角的「上下文设置」,确保设置为**「继承仪表盘上下文」**。
- 若某条查询单独指定了其他仓库/角色,会导致全局上下文冲突重置,统一继承可避免此问题。
3. 验证角色权限与默认仓库配置
- 执行
SHOW GRANTS TO ROLE <你的角色名>,确认角色拥有目标仓库的USAGE权限。 - 执行
DESCRIBE ROLE <你的角色名>,查看DEFAULT_WAREHOUSE字段。若为空,执行ALTER ROLE <你的角色名> SET DEFAULT_WAREHOUSE = <目标仓库名>为角色设置默认仓库,确保上下文可稳定继承。
4. 清除仪表盘缓存
- 进入仪表盘「设置」页面,找到「缓存」选项并点击「清除所有缓存」。
- 退出重登Snowflake,重新打开仪表盘测试上下文是否还会重置。
5. 排查查询脚本中的隐含上下文修改
- 检查所有仪表盘查询脚本,确认没有误写
USE WAREHOUSE或USE ROLE语句,这类语句会覆盖仪表盘上下文导致重置。 - 暂时移除
:daterange过滤器,测试基础查询是否能维持上下文,排除过滤器绑定冲突。
应急替代方案
若上述步骤无效,可在仪表盘全局脚本中强制设置仓库:
- 进入仪表盘编辑模式,点击顶部「脚本」按钮,添加:
USE WAREHOUSE <你的目标仓库名>; - 保存后,仪表盘执行前会自动运行该脚本,强制指定仓库,绕过上下文重置问题。
内容的提问来源于stack exchange,提问作者Corey Peck
相关产品推荐
相关产品推荐

