带有接收器存储过程的 Azure SQL 数据工厂复制 Activity

Azure SQL Data Factory Copy Activity with Sink Stored Procedure

我无法解决这个问题,而且似乎没有在这个论坛上找到解决方案。我是 Azure 新手

我已经成功地建立了从 Prem SQL 服务器到 Azure SQL 的直接 SQL 查询副本 activity。

当我继续编辑以包含存储过程时,它失败了。我在 Azure Sql;

中创建了如下数据类型和存储过程
CREATE TYPE [dbo].[Patch] AS TABLE(
    [BaseKey] int,
    [GISKey] [varchar](10),
    [ActiveFrom] datetime
)
DROP PROC IF EXISTS dbo.spCopyPatch
GO
CREATE PROC dbo.spCopyPatch
@Patch dbo.Patch READONLY,
@BaseKey int,
@GISKey varchar(10),
@ActiveFrom datetime
AS
INSERT INTO dbo.Patch( BaseKey,GISKey,ActiveFrom)
VALUES(@BaseKey,@GISKey,@ActiveFrom);
GO

然后我继续编辑副本 activity Sink。可以提取存储过程 OK;

然而这在调试时失败了:我是正确还是遗漏了什么?

非常感谢您的帮助。

根据您看到的逻辑,ADF 中通常有 2 种数据转换方法:

对于 ELT:

  1. 您复制 activity,其中您按原样将数据从源复制到目标,然后使用存储过程 activity 触发执行所需转换的存储过程。 因此,在您的情况下,您可以在接收器中创建一个 table,并通过复制 activity 将源 table 映射到接收器 table。 然后调用存储过程 activity 进行转换

对于 ETL:

  1. 有一些数据流,您可以在其中对数据进行转换,然后再将它们加载到接收器中

我解决了这个问题并直接从 OnPrem SQL 服务器写入到 Azure SQL 服务器。

步骤 1. 使用从 SQL 中提取的数据集更新源。

步骤 2. 将我的存储过程更新为下面以绿色突出显示的内容

步骤 3. 按如下所示顺序填充 Sink

调试复制 activity 就可以了