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

Snowflake查询当前用户权限遇报错,寻求解决方法

解决Snowflake当前用户权限查询问题

问题原因解析

  1. SHOW GRANTS ON CURRENT_USER();报错,是因为SHOW GRANTS ON语法用于查看**数据库对象(表、仓库、角色等)**的权限,而非用户自身的权限。要查看用户权限,必须用SHOW GRANTS TO USER语法。
  2. 用会话变量$curr_usr直接代入SHOW GRANTS TO USER时报错,是因为Snowflake的SHOW类元数据命令不支持直接引用会话变量,必须通过动态SQL来构建并执行语句。

可行解决方案

方案1:动态SQL结合会话变量

先获取当前用户到变量,再通过动态SQL拼接执行权限查询:

-- 设置当前用户到会话变量
SET curr_usr = CURRENT_USER();
-- 用动态SQL执行权限查询(注意用双引号包裹用户名,适配邮箱格式的用户名)
EXECUTE IMMEDIATE 'SHOW GRANTS TO USER "' || $curr_usr || '";';

方案2:直接用CURRENT_USER()拼接动态SQL

省去变量步骤,直接构建查询语句:

EXECUTE IMMEDIATE 'SHOW GRANTS TO USER "' || CURRENT_USER() || '";';

方案3:结构化结果查询(可选)

如果需要将结果转换为结构化表格式(方便后续分析或过滤),可以结合RESULT_SCAN函数:

EXECUTE IMMEDIATE 'SHOW GRANTS TO USER "' || CURRENT_USER() || '";';
-- 扫描上一条查询的结果,转换为表
SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:39:58