如何无需编程创建Pipeline在Azure Synapse Analytics中执行SQL查询
实现Azure Synapse编程式执行SQL查询的方案
1. 直接调用Synapse SQL端点的REST API
你可以通过专用SQL池或无服务器SQL池的T-SQL执行API直接运行SQL:
- 专用SQL池(原SQL DW):发送POST请求到
https://<工作区名称>.sql.azuresynapse.net/v1/servers/<服务器名称>/databases/<数据库名称>/query,请求体中携带要执行的SQL语句,通过Azure AD令牌完成身份验证。 - 无服务器SQL池:端点格式为
https://<工作区名称>-ondemand.sql.azuresynapse.net/v1/servers/<服务器名称>/databases/<数据库名称>/query,调用逻辑与专用池一致。
2. 使用官方SDK简化开发
推荐用SDK替代直接写REST请求,降低开发复杂度:
- Python:借助
pyodbc或sqlalchemy连接Synapse SQL端点执行SQL,示例代码:
import pyodbc server = '<工作区名称>.sql.azuresynapse.net' database = '<数据库名称>' username = '<账号>' password = '<密码>' driver= '{ODBC Driver 18 for SQL Server}' with pyodbc.connect(f'DRIVER={driver};SERVER={server};PORT=1433;DATABASE={database};UID={username};PWD={password}') as conn: with conn.cursor() as cursor: # 示例:查询Blob存储中的Parquet数据 cursor.execute("SELECT * FROM OPENROWSET(BULK 'https://<存储账号>.blob.core.windows.net/<容器>/<文件路径>', FORMAT = 'PARQUET') AS [result]") row = cursor.fetchone() while row: print(row) row = cursor.fetchone()
- .NET:使用
System.Data.SqlClient或Microsoft.Azure.Synapse库,通过ADO.NET连接执行SQL。
3. 利用SQL Script API触发执行
你找到的SQL Script API支持脚本创建+执行的完整流程:
- 先调用
Create Sql Script接口创建包含目标SQL的脚本资源,再调用Execute Sql Script接口运行该脚本,适合需要保存查询脚本的场景,直接执行SQL则用第一种方式更高效。
关键注意事项
- 身份验证:优先使用Azure AD服务主体完成身份验证,避免硬编码敏感信息。
- 权限配置:确保执行账号/服务主体拥有Synapse SQL池的
db_datareader(查询权限)或更高权限,同时对Blob存储具备读取权限(可通过托管身份或SAS令牌实现)。
内容的提问来源于stack exchange,提问作者SNEHAL DANGE
相关产品推荐
相关产品推荐

