如何识别在调试模式下工作但在触发时不工作的 Azure 数据工厂管道上的问题?

How can I identify issues on an Azure Data Factory pipeline that works in debug mode but not when triggered?

在 Azure 数据工厂上,我有一个使用复制数据 activity 的参数化管道,源是 OData,接收器是本地 SQL 服务器。它们正在使用自托管集成运行时执行。

直到上周左右,该管道一直在成功运行,能够从 32 table 秒动态复制数据。现在,我在 运行 相同的管道中遇到了其中 2 个 table 的问题。它们在调试模式下执行时可以成功运行,但通过触发器执行时则无法运行,即使参数相同也是如此。 这些管道上没有要发布的更改,我知道触发器执行已发布的管道版本,而调试执行它时未保存更改。

问题 table 1

管道完全失败,错误与 table 在接收器中找不到有关。错误信息:

Operation on target Load Data failed: Failure happened on 'Source' side. ErrorCode=UserErrorODataRequestNotSucceeded,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Requesting response from path [redacted] and query failed with status code NotFound and message The resource you are looking for has been removed, had its name changed, or is temporarily unavailable..,Source=Microsoft.DataTransfer.Runtime.ODataConnector,'

同样,当通过调试执行时,使用相同的参数,它像往常一样工作。我试过从复制数据 activity 中删除参数化并为此 table 创建一个单独的管道,但结果是一样的,它无法在接收器中找到 table 除非在调试中执行。

问题 table 2

管道成功执行,但它仅加载 20 列中的 16 列的数据。源和接收器中的所有列名称和类型都相同。在调试模式下执行时,将填充所有 20 列。复制数据 activity 未提供有关那些未填充列的任何详细信息,如下所示。

我希望收到警告或有关不兼容列的信息,但找不到任何内容。这个特定问题似乎只发生在加载 32 个 table 中的 1 个 table(至少我知道)。

直到上周我才遇到这些问题。为什么这些问题只发生在某些 tables 而在调试模式下也不会发生?如何进一步解决这些问题?

我已经向 Microsoft 提交了支持票并解决了问题 - 对 master 分支的更改未正确发布,它们是 "corrupted"。数据工厂使用旧的 metadata/code 并且从不更新,因此它在调试模式下工作(current/new 元数据)而不是触发器(已发布 metadata/code)。

通过重新创建与 OData 的链接服务连接并将其替换到正在使用它的数据集中,问题已得到解决。