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

.NET应用连接Snowflake成功但执行SQL报UnprocessableEntity错误

解决Snowflake执行SQL时的391920错误

问题根源

错误码391920明确要求必须指定执行SQL的仓库:你的请求体中未包含warehouse字段,且当前用户未配置默认仓库(错误消息里的DEFAULT_NAMESPACE应为表述笔误,实际需要配置的是DEFAULT_WAREHOUSE)。

解决方案

方案1:修改代码,在请求体中添加仓库参数

调整QuerySnowflake方法的请求内容,加入warehouse字段(替换为你的试用账号中的仓库名称,试用账号默认仓库通常为COMPUTE_WH):

public async Task<QueryResult> QuerySnowflake(string statement, string database, string schema, string warehouse)
{
    var content = new
    {
        statement,
        database,
        schema,
        warehouse
    };

    return await _httpClient.SnowflakePost<QueryResult>($"https://{_accountId}.snowflakecomputing.com/api/v2/statements", content, await GetHeaders(), _cancellationToken);
}

调用时传入仓库名:

var result = await QuerySnowflake("SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER", "SNOWFLAKE_SAMPLE_DATA", "TPCH_SF1", "COMPUTE_WH");

方案2:为用户配置默认仓库

通过Snowflake客户端执行以下SQL,将默认仓库绑定到你的用户(替换my_username和COMPUTE_WH为实际信息):

ALTER USER my_username SET DEFAULT_WAREHOUSE = COMPUTE_WH;

额外验证:确保角色拥有仓库权限

如果配置默认仓库后仍报错,检查当前角色(sysadmin)是否拥有仓库的使用权限:

GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE sysadmin;

补充说明

你的试用账号未自动为用户绑定默认仓库,而之前可用的账号已配置过该选项,这是导致代码在新账号失效的核心原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:40:20