Azure 数据工厂 V2 - 调用返回多个结果集的存储过程

Sar*_*rav 5 azure-data-factory

我想创建一个 ADF v2 管道来调用 Azure SQL 数据库中的存储过程。该存储过程具有输入参数,并将返回多个结果集(大约 3 个)。我们需要将其提取出来。我们正在尝试加载到 4 个不同文件的 Blob 存储或加载到表。

有没有办法在管道中执行?

在 SSIS 中,可以选择使用脚本组件和提取。https://www.timmitchell.net/post/2015/04/27/the-ssis-object-variable-and-multiple-result-sets/

在数据工厂中寻找建议。

wBo*_*Bob 2

您无法在 Azure 数据工厂 (ADF) 中轻松完成此任务,因为存储过程活动根本不支持结果集,并且复制活动不支持多个结果集。然而,通过一些小的改变,你可以获得相同的结果:你有几个选择:

  1. 如果代码和 SSIS 包已经存在并且您希望最大限度地减少重构,则可以通过 SSIS-IR 将其托管在 ADF 中
  2. 也许您可以使用 Azure 函数来完成此任务,该函数大致相当于 SSIS 脚本任务,但对我来说这似乎有点浪费时间。这是一种未经证实的模式,您有更简单的选择,例如:
  3. 将存储过程分成几部分:让它处理数据而不返回任何结果集。更改过程以将三个结果集放在表中。有多个并行运行的复制活动,在主 Stored Proc 活动完成后将数据复制到 blob 存储,如下所示:

ADF管道

还可以欺骗 Lookup 活动来为您运行存储过程,但输出仅限于 5,000 行,并且您不能随后将其通过管道传输到 Copy 活动。我推荐选项 3,只需对您的过程进行一些更改即可获得相同的结果。