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

通过.NET REST API访问Synapse Serverless SQL Pool数据遇400错误求解决

解决Azure Synapse Serverless SQL Pool REST API调用400错误的方案

核心错误原因:Access Token的Scope不匹配

你当前获取Token时使用的scope: https://graph.microsoft.com/.default是针对Microsoft Graph API的,而访问Azure Synapse SQL On-Demand端点需要使用Synapse工作区专属的scope,这是触发400错误的主要原因。同时,获取Token的请求方法应为POST而非GET,这也是一个关键错误点。

修正后的Token获取请求

  • 请求方法:POST
  • 请求URL:https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
  • 请求体(x-www-form-urlencoded格式)参数:
    • grant_type: client_credentials
    • client_id: {你的客户端ID}
    • client_secret: {你的客户端密钥}
    • scope: https://{workspace-name}-ondemand.sql.azuresynapse.net/.default

其他400错误排查与修正点

1. 请求体格式与SQL语句检查

  • 确保POST到/query端点的请求体是合法JSON,且视图名称格式正确:
    {"sql":"SELECT * FROM {你的视图名称}"}
    
  • 若视图包含特殊字符或跨数据库/架构,需用方括号包裹,例如:SELECT * FROM [dbName].[dbo].[viewName]

2. 服务主体权限配置

  • 确认client_id对应的服务主体在Synapse工作区中拥有Synapse SQL管理员、SQL查询者角色,或直接对目标视图/数据库分配了SELECT权限。

3. 请求头与端点验证

  • 调用/query端点时,必须携带Content-Type: application/json请求头;
  • 确认端点格式正确:https://{workspace-name}-ondemand.sql.azuresynapse.net/query,请求方法为POST。

4. Token有效性校验

  • 拿到Token后,可解析确认aud(受众)字段为https://{workspace-name}-ondemand.sql.azuresynapse.net,而非graph.microsoft.com。

修正后的完整调用示例

  1. 获取Token请求:
    POST https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=client_credentials&client_id={你的client_id}&client_secret={你的client_secret}&scope=https://{workspace-name}-ondemand.sql.azuresynapse.net/.default
    
  2. 调用Synapse Query API:
    POST https://{workspace-name}-ondemand.sql.azuresynapse.net/query
    Authorization: Bearer {获取到的access_token}
    Content-Type: application/json
    
    {"sql":"SELECT * FROM [你的视图名称]"}
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:54:56