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

PySpark调用Synapse API创建SQL脚本返回202但未生成脚本

Synapse SQL脚本创建异常:返回202 Accepted但未生成脚本

背景

已通过PySpark调用Synapse的GET API成功获取工作区内的SQL脚本,代码如下:

%%pyspark
import requests
token = mssparkutils.credentials.getToken('Synapse')

# GET请求地址
url = "https://xxxx-xx-xx-xxx-xx-xxx-xx.dev.azuresynapse.net/sqlScripts?api-version=2020-12-01"
headers = {'Authorization': f"Bearer {token}"}
response = requests.get(url,  headers=headers)

随后尝试通过PUT调用创建/更新SQL脚本的API,代码片段如下:

# 替换GET为PUT请求
requests.put(url2, data=data, headers=headers2)

请求返回202 Accepted,响应内容显示"state":"Creating",但工作区内并未生成新的SQL脚本。响应示例:

b'{"id":"/subscriptions/xxxx-xx-xxx-xxx-xxxx/resourceGroups/xxx-xx-xxx-xxx-xx/providers/Microsoft.Synapse/workspaces/xxx-xx-xx-xxx-xx-xxxx-xxx/sqlScripts/test","recordId":xxxx,"state":"Creating","created":"2023-10-12T15:40:03.6666667Z","changed":"2023-10-12T15:40:03.6666667Z","type":"SqlScript","name":"test","operationId":"xxxxxx-xxx-xxx-xxxx-xxxxxx","artifactId":"xxxxx-xxxxx-xxxx-xxx-xxxxxxxx"}'
<Response [202]>

可能的问题及解决方向

  • PUT请求URL格式错误:PUT请求需要指定具体的目标脚本名称,正确URL格式应为https://<工作区名称>.dev.azuresynapse.net/sqlScripts/<脚本名称>?api-version=2020-12-01,不能使用GET请求的列表型URL。
  • 请求头缺少必要字段:必须添加Content-Type: application/json头,否则服务无法正确解析请求体中的JSON数据。
  • 请求体(data)结构不合法:需严格按照API要求构造JSON格式的请求体,至少包含脚本内容和类型字段,示例结构:
{
  "properties": {
    "content": {
      "query": "SELECT * FROM your_table"
    },
    "type": "SqlScript"
  }
}
  • 异步操作后台执行失败:202状态码仅表示请求已接收,需利用响应中的operationId调用操作状态查询API,确认后台是否实际执行成功。
  • 权限不足:检查当前令牌对应的身份是否拥有Synapse SQL Script Contributor或更高权限,GET权限不代表拥有PUT的创建权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 19:03:28