Snowflake查询当前用户权限遇报错,寻求解决方法
解决Snowflake当前用户权限查询问题
问题原因解析
SHOW GRANTS ON CURRENT_USER();报错,是因为SHOW GRANTS ON语法用于查看**数据库对象(表、仓库、角色等)**的权限,而非用户自身的权限。要查看用户权限,必须用SHOW GRANTS TO USER语法。- 用会话变量
$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
相关产品推荐
相关产品推荐

