Azure Data Factory数据流Spark作业测试连接失败,求原因及解决方案
问题描述
- 使用Linked Service将Azure SQL数据库连接至Azure Data Factory(ADF)数据流,Linked Service连接测试成功(截图:
) - 在数据流中添加基于该Linked Service的源数据集时,测试连接失败(截图:
),触发Spark作业报错,报错信息如下:
Spark job failed: { "text/plain": "{\"runId\":\"94405efb-4fd6-449e-aa7f-e4396f1db87f\",\"sessionId\":\"93dd501b-ac03-4c93-8773-36058e06b8a0\",\"status\":\"Failed\",\"payload\":{\"statusCode\":400,\"shortMessage\":\"com.microsoft.dataflow.broker.MissingRequiredPropertyException: server is a required property for AzureSqlDatabase1.\\ncom.microsoft.dataflow.broker.PropertyNotFoundException: Could not extract value from AzureSqlDatabase1\",\"detailedMessage\":\"Failure 2024-05-17 07:10:36.828 failed DebugManager.processJob, run=94405efb-4fd6-449e-aa7f-e4396f1db87f, errorMessage=com.microsoft.dataflow.broker.MissingRequiredPropertyException: server is a required property for AzureSqlDatabase1.\\ncom.microsoft.dataflow.broker.PropertyNotFoundException: Could not extract value from AzureSqlDatabase1\"}}\n" } - RunId: 94405efb-4fd6-449e-aa7f-e4396f1db87f
- 已尝试操作:重建Linked Service、增大Data Flow Integration Runtime计算规模,问题仍未解决
原因分析
报错核心为MissingRequiredPropertyException: server is a required property for AzureSqlDatabase1,说明Spark作业在读取Linked Service配置时无法正确提取server属性值,常见触发原因:
- Linked Service采用参数化配置,但数据流数据集未正确传递对应参数,导致运行时无法解析server属性
- Linked Service的身份验证方式(MSI/服务主体等)在数据流运行环境中缺少权限,无法读取Azure SQL的元数据(含server信息)
- 数据集配置中手动覆盖了Linked Service的关键属性,但未正确设置server值
- ADF服务端缓存未同步,导致数据流读取的是旧的Linked Service配置
解决方案
按优先级执行以下操作:
- 检查数据集参数映射:若Linked Service使用参数(如
@pipeline().parameters.serverName),确认数据流引用该Linked Service时,已在数据集的「参数」选项卡完成完整的参数传递配置 - 验证身份权限配置:
- 若使用MSI身份验证,确保ADF托管标识拥有Azure SQL数据库的
db_datareader权限,同时拥有Azure SQL服务器的Microsoft.Sql/servers/read权限(用于读取server元数据) - 若使用服务主体,确认应用程序ID、密钥、租户ID配置正确,且拥有上述相同权限
- 若使用MSI身份验证,确保ADF托管标识拥有Azure SQL数据库的
- 排查数据集属性覆盖:打开数据集配置,检查「连接」选项卡是否手动覆盖了Linked Service属性,若存在覆盖,确保
server属性已正确填写,无空值或无效表达式 - 刷新缓存并重新发布:
- 在ADF Studio点击右上角「发布全部」,确保所有配置同步到服务端
- 重启Data Flow Integration Runtime,清除运行时缓存
- 切换配置方式排查:暂时将参数化Linked Service改为硬编码配置(直接填写server名称、数据库名),测试数据流是否正常连接,确认参数化是否为问题根源
- 检查区域与网络配置:确保ADF与Azure SQL数据库处于同一区域,或已配置正确的VNet对等连接/私有链接,避免网络层面的元数据读取失败
内容的提问来源于stack exchange,提问作者Indrajith Ekanayake
相关产品推荐
相关产品推荐

