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

在Synapse中用Spark链接服务连接本地数据库遇密钥获取错误求助

Spark调用mssparkutils获取密钥报错的解决方案

问题描述

我按照Azure Synapse的Spark SQL连接器文档连接本地数据库,代码如下:

servername = "XXXXX"
dbname = "poplesdb"
url = servername + ";" + "databaseName=" + dbname + ";"
dbtable = "Test"
user = "test\user" 
password = mssparkutils.credentials.getSecret('xxxx','xxxxxxx')

执行后触发错误:

Py4JJavaError: An error occurred while calling z:mssparkutils.credentials.getSecret.
: com.twitter.finagle.NoBrokersAvailableException: No hosts are available for XXXX.vault.azure.net:443, Dtab.base=[], Dtab.local=[]. Remote Info: Not Available

尝试多日未解决,需要连接retail数据库内的数据源,链接服务配置截图如下:
链接服务配置截图1
链接服务配置截图2

排查与解决步骤

  • 检查密钥库网络连通性:错误提示无法连接Azure Key Vault的443端口,需确认Synapse工作区所在虚拟网络是否允许访问该密钥库。若用专用端点,要确保端点配置正确、路由无阻塞;若为公网访问,需检查密钥库防火墙规则是否放行Synapse工作区IP段。
  • 验证链接服务名称:从截图看链接服务已关联密钥库,需确认代码中getSecret第一个参数(密钥库链接服务名)与实际链接服务名称完全一致,注意大小写和拼写。
  • 确认密钥名称准确性:代码中getSecret第二个参数是密钥名称,要确保该密钥存在于目标密钥库中,且名称完全匹配(含大小写)。
  • 检查Synapse权限:确保Synapse工作区的服务主体/托管身份拥有密钥库的getSecret权限,可在密钥库访问策略中添加对应身份的权限。
  • 测试基础连通性:在Synapse笔记本中用极简代码测试密钥库访问,比如:
mssparkutils.credentials.getSecret('你的链接服务名','你的密钥名')

逐步缩小问题范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:30:54