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

如何在Synapse笔记本中连接Serverless SQL Pool?连接失败排查

解决Synapse笔记本连接Serverless SQL Pool查询视图的问题

关于选项1的错误分析

azure-mgmt-synapse是Azure资源管理SDK,仅用于创建、配置、管理Synapse工作区及相关资源,不能直接用于连接Serverless SQL Pool执行SQL查询。你代码中引用的ServerlessSqlEndpoint类并不属于该SDK的查询模块,因此会抛出NameError。这个方向从一开始就不适用,建议放弃这种方式。

关于选项2的超时错误解决

HYT00登录超时错误通常由连接配置、网络或权限问题导致,可按以下步骤修正:

1. 修正连接字符串

Azure SQL类服务要求加密连接,需在连接字符串中添加加密相关参数:

import pyodbc

server = 'xxxxx-ondemand.sql.azuresynapse.net'
database = 'dbxxxx'
authentication = "ActiveDirectoryInteractive"

# 添加Encrypt和TrustServerCertificate参数
connection_string = f"DRIVER={{ODBC Driver 18 for SQL Server}};SERVER={server};DATABASE={database};Authentication={authentication};Encrypt=yes;TrustServerCertificate=no;"

connection = None  
try:
    connection = pyodbc.connect(connection_string)
    print("连接成功")

    cursor = connection.cursor()
    cursor.execute('SELECT TOP 10 * FROM testview')
    rows = cursor.fetchall()
    for row in rows:
        print(row)

except Exception as e:
    print(f"连接错误: {str(e)}")

finally:
    if connection:
        connection.close()
        print("连接已关闭")

2. 检查防火墙配置

确保Serverless SQL Pool的防火墙规则允许以下访问:

  • 开启「允许Azure服务和资源访问此服务器」(在Azure门户的Serverless SQL Pool防火墙设置中配置)
  • 如果是本地测试,需添加本地IP到防火墙白名单;如果是Synapse笔记本,需确认工作区IP已被允许

3. 验证驱动版本

如果仍超时,可尝试改用ODBC Driver 17 for SQL Server,部分环境下兼容性更好:

connection_string = f"DRIVER={{ODBC Driver 17 for SQL Server}};SERVER={server};DATABASE={database};Authentication={authentication};Encrypt=yes;"

更简便的内置查询方式

在Synapse笔记本中,无需额外安装驱动,可直接使用以下两种方式查询Serverless SQL Pool的视图:

方式1:使用Spark SQL直接查询

如果已在Synapse工作区中配置了Serverless SQL Pool的链接服务,可直接通过Spark SQL访问:

# 查询Serverless SQL Pool中的视图
df = spark.sql("SELECT TOP 10 * FROM sqlserver.dbxxxx.dbo.testview")
df.show()

注:sqlserver是链接服务名称,需替换为你实际的链接服务名;dbxxxx为数据库名,testview为视图名。

方式2:使用mssparkutils工具类

Synapse内置的mssparkutils可直接调用Serverless SQL Pool执行查询:

import mssparkutils

# 执行SQL查询,第二个参数为Serverless SQL Pool的名称
query_result = mssparkutils.sql.query("SELECT TOP 10 * FROM testview", "你的Serverless SQL Pool名称")
# 转换为DataFrame并展示
query_result.toDF().show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:25:34