Azure Data Factory Lookup活动如何获取SQL执行抛出的错误数据?
我正在使用 Azure Data Factory 和 Azure Database Instance 进行开发。
我配置的 Data Factory Lookup 活动会调用可能执行失败的存储过程,当故障发生时,存储过程的CATCH代码块会执行THROW抛出异常。我在 Azure Data Factory 客户端查看错误弹窗时可以看到THROW的输出内容,但目前无法通过表达式访问该输出,经测试确认该内容没有被正常对外暴露。
已尝试的错误获取表达式
@activity('activityName').output.firstRow.error @activity('activityName').output.firstRow.errors @activity('activityName').error.message @activity('activityName').errors.message @activity('activityName').errors.number @activity('activityName').ErrorCode @activity('activityName').Errors
弹窗返回的错误详情
Failure happened on 'Source' side. ErrorCode=SqlOperationFailed,
'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,
Message=A database operation failed with the following error:
'blabla', Source=,''Type=System.Data.SqlClient.SqlException,
Message=blabla, Source=.Net SqlClient Data Provider,
SqlErrorNumber=245, Class=16, ErrorCode=-2146232060, State=1,
Errors=[{ Class=16, Number=245,State=1,Message=blabla,},],'
所需的错误数据在报错详情中明确存在,但无法通过现有表达式访问,且当前官方文档存在缺失:仅提供了 CopyActivity 的错误输出访问说明,没有 LookupActivity 的相关参考内容。
核心需求
- 实现错误日志记录:部分场景下存储过程执行成功需要向 Data Factory 返回输出,因此必须捕获
THROW抛出的错误数据 - 经测试发现,先向 Data Factory 返回
SELECT结果后再执行THROW,无法将该任务标记为失败状态,需要适配该场景的异常处理逻辑
内容的提问来源于stack exchange,提问作者GettingItDone

