【问题标题】:Azure SQL Data Factory Copy Activity with Sink Stored Procedure带有接收器存储过程的 Azure SQL 数据工厂复制活动
【发布时间】:2021-03-10 04:10:09
【问题描述】:

我无法进行此操作,并且似乎在此论坛上找不到解决方案。我是 Azure 新手

我已成功建立从 Prem SQL Server 到 Azure SQL 的直接 SQL 查询复制活动。

当我继续编辑以包含存储过程时,它会失败。我在 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

然后我继续编辑复制活动 Sink。它能够拾取存储过程OK;

但是这在调试时失败了:我是做对了还是遗漏了什么?

提前高度感谢您的帮助。

【问题讨论】:

  • 嘿@wwnde,您能说说为什么要在接收器中使用存储过程吗?通过复制活动,您可以直接映射源表和汇表列。因此,了解您的用例将有助于确定解决方案
  • @Nandan 一旦管道最终确定并开始工作,其目的是经常修改存​​储过程,以便根据企业所有者的需求进行各种转换。这可能会不时变化。我从一个直接的直接副本开始了解它是如何工作的。
  • 你得到什么错误?
  • @wBob 感谢您愿意提供帮助。我整理了一下。在下面分享我的答案

标签: azure stored-procedures azure-data-factory azure-data-factory-pipeline


【解决方案1】:

我解决了这个问题并直接从 OnPrem SQL Server 写入 Azure SQL Server。

第 1 步。 使用从 SQL 中提取的数据集更新 Source。

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

第 3 步。 按顺序填充 Sink,如下所示

调试复制活动,你拥有它

【讨论】:

    【解决方案2】:

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

    对于 ELT:

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

    对于 ETL:

    1. 在某些数据流中,您可以在将数据加载到接收器之前对其进行转换

    【讨论】:

    • 这不能回答我的问题。我知道临时表持有。但是我正在努力实现这个过程docs.microsoft.com/en-us/azure/data-factory/…
    • 感谢您的帮助。那不是我需要的。我研究并找到了解决方案。看我的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 2022-01-04
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多