Azure 数据工厂 - 查找 activity - 如何访问错误数据? (SQL 错误)
Azure Data Factory - Lookup activity - How to access error data? (SQL error)
我正在使用 Azure 数据工厂 和 Azure 数据库实例。
我有一个数据工厂查找 activity,它调用了一个可能会失败的过程。在 CATCH
块中,当发生故障时调用 THROW
。在 Azure 数据工厂客户端中检查错误弹出窗口时,我可以看到 'output' of THROW
。我目前无法访问这个'output',据我所知它没有输出。
我试过了(每行都是一次尝试):
@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 访问错误输出的综合文档。
我想要实现的是记录错误。在某些情况下,该过程会成功并需要将输出提交给数据工厂,这就是为什么我必须从 THROW
; 捕获错误数据的原因;在将 SELECT
返回到数据工厂后,我无法通过使用 THROW
再次引发错误来使此任务失败。
通常您可以访问如下所示的活动复合输出:
@activity('*activityName*').output.*subfield1*.*subfield2*
错误正文格式如下:
"value": {
"errorCode": "2100",
"message": "Failure happened on 'Source' side. ErrorCode=SqlOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=A database operation failed with the following error: 'Invalid object name 'SalesLT.Customr'.',Source=,''Type=System.Data.SqlClient.SqlException,Message=Invalid object name 'SalesLT.Customr'.,Source=.Net SqlClient Data Provider,SqlErrorNumber=208,Class=16,ErrorCode=-2146232060,State=1,Errors=[{Class=16,Number=208,State=1,Message=Invalid object name 'SalesLT.Customr'.,},],'",
"failureType": "UserError",
"target": "Lookup",
"details": []
}
您可以使用它来添加动态内容:
@activity('<name of your lookup>').Error.message
这是一个示例,您可以在其中使用 Add activity on 方法到 select 继续到下一个 [=58= 的输出流].
存储过程导致错误:
字符串变量 errorOutput 现在包含错误消息!
此外,您可以使用点运算符访问错误消息的每个元素。
1. @activity('<name of your lookup>').Error.errorCode
2. @activity('<name of your lookup>').Error.failureType
3. @activity('<name of your lookup>').Error.target
4. @activity('<name of your lookup>').Error.details
或者, 如果您想确保 activity 仅在其前一个 activity 时执行(在您的场景中查找 activity)成功了,你也可以在“Completion”流上使用If condition activity。
不同的原因可能导致此错误。检查list可能的原因分析和相关建议。
我正在使用 Azure 数据工厂 和 Azure 数据库实例。
我有一个数据工厂查找 activity,它调用了一个可能会失败的过程。在 CATCH
块中,当发生故障时调用 THROW
。在 Azure 数据工厂客户端中检查错误弹出窗口时,我可以看到 'output' of THROW
。我目前无法访问这个'output',据我所知它没有输出。
我试过了(每行都是一次尝试):
@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 访问错误输出的综合文档。
我想要实现的是记录错误。在某些情况下,该过程会成功并需要将输出提交给数据工厂,这就是为什么我必须从 THROW
; 捕获错误数据的原因;在将 SELECT
返回到数据工厂后,我无法通过使用 THROW
再次引发错误来使此任务失败。
通常您可以访问如下所示的活动复合输出:
@activity('*activityName*').output.*subfield1*.*subfield2*
错误正文格式如下:
"value": {
"errorCode": "2100",
"message": "Failure happened on 'Source' side. ErrorCode=SqlOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=A database operation failed with the following error: 'Invalid object name 'SalesLT.Customr'.',Source=,''Type=System.Data.SqlClient.SqlException,Message=Invalid object name 'SalesLT.Customr'.,Source=.Net SqlClient Data Provider,SqlErrorNumber=208,Class=16,ErrorCode=-2146232060,State=1,Errors=[{Class=16,Number=208,State=1,Message=Invalid object name 'SalesLT.Customr'.,},],'",
"failureType": "UserError",
"target": "Lookup",
"details": []
}
您可以使用它来添加动态内容:
@activity('<name of your lookup>').Error.message
这是一个示例,您可以在其中使用 Add activity on 方法到 select 继续到下一个 [=58= 的输出流].
存储过程导致错误:
字符串变量 errorOutput 现在包含错误消息!
此外,您可以使用点运算符访问错误消息的每个元素。
1. @activity('<name of your lookup>').Error.errorCode
2. @activity('<name of your lookup>').Error.failureType
3. @activity('<name of your lookup>').Error.target
4. @activity('<name of your lookup>').Error.details
或者, 如果您想确保 activity 仅在其前一个 activity 时执行(在您的场景中查找 activity)成功了,你也可以在“Completion”流上使用If condition activity。
不同的原因可能导致此错误。检查list可能的原因分析和相关建议。