通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure 数据工厂 或 Synapse Analytics 中使用 SQL Server 存储过程活动转换数据

适用于: Azure 数据工厂 Azure Synapse Analytics

提示

Microsoft Fabric 中的 Data Factory 是下一代 Azure 数据工厂,具有更加简化的架构、内置人工智能和新功能。 如果不熟悉数据集成,请从Fabric数据工厂开始。 现有 ADF 工作负载可以升级到 Fabric,以跨数据科学、实时分析和报告访问新功能。

在数据工厂或 Synapse 管道中,您可以通过数据转换活动将原始数据转化和处理成预测和见解。 存储过程活动是管道支持的转换活动之一。 本文基于转换数据一文编写,它概述了数据转换和支持的转换活动。

注意

如果你不熟悉Azure 数据工厂,请在阅读本文之前通读 引入 Azure 数据工厂 并执行教程:Tutorial:转换数据。 若要了解有关 Synapse Analytics 的详细信息,请阅读 什么是 Azure Synapse Analytics

可以使用存储过程活动在企业中的以下数据存储之一或Azure虚拟机(VM)中调用存储过程:

  • Azure SQL 数据库
  • Azure Synapse Analytics
  • SQL Server数据库。 如果使用SQL Server,请在托管数据库的同一台计算机或有权访问数据库的单独计算机上安装自承载集成运行时。 Self-Hosted 集成运行时是一个组件,它以安全且托管的方式将本地/Azure VM 上的数据源与云服务连接起来。 有关详细信息,请参阅自托管集成运行时一文。

重要

将数据复制到Azure SQL 数据库或SQL Server时,可以将复制活动中的 SqlSink 配置为使用 sqlWriterStoredProcedureName 属性调用存储过程。 有关属性的详细信息,请参阅以下连接器文章:Azure SQL 数据库SQL Server。 不支持在使用复制活动将数据复制到Azure Synapse Analytics时调用存储过程。 但是,可以使用存储过程活动调用Azure Synapse Analytics中的存储过程。

从Azure SQL 数据库或SQL Server或Azure Synapse Analytics复制数据时,可以在复制活动中配置 SqlSource,以使用 sqlReaderStoredProcedureName 属性调用存储过程以从源数据库读取数据。 有关详细信息,请参阅以下连接器文章:Azure SQL 数据库SQL ServerAzure Synapse Analytics

如果存储过程具有输出参数,则不要使用存储过程活动,请使用查找活动和脚本活动。 存储过程活动尚不支持有输出参数的调用 SP。

如果使用存储过程活动调用具有输出参数的存储过程,则会出现以下错误。

对 SQL Server 的执行失败。 如果需要进一步的支持,请联系SQL Server团队。 SQL 错误编号:201。 错误消息:过程或函数“sp_name”需要参数“@output_param_name”,该参数未提供。

使用 UI 创建存储过程活动

若要在管道中使用存储过程活动,请完成以下步骤:

  1. 在管道“活动”窗格中搜索“存储过程”,然后将“存储过程”活动拖动到管道画布上。

  2. 如果尚未选择画布上的新的“存储过程”活动,请选择它及其“设置”选项卡,以编辑其详细信息。

    显示存储过程活动的 UI。

  3. 选择现有服务或创建指向Azure SQL 数据库、Azure Synapse Analytics或SQL Server的新链接服务。

  4. 选择存储过程,并提供用于执行它的任何参数。

语法详细信息

下面是用于定义存储过程活动的 JSON 格式:

{
    "name": "Stored Procedure Activity",
    "description":"Description",
    "type": "SqlServerStoredProcedure",
    "linkedServiceName": {
        "referenceName": "AzureSqlLinkedService",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "storedProcedureName": "usp_sample",
        "storedProcedureParameters": {
            "identifier": { "value": "1", "type": "Int" },
            "stringData": { "value": "str1" }

        }
    }
}

下表描述了其中的 JSON 属性:

属性 描述 必需
名称 活动名称
描述 描述活动用途的文本
类型 对于存储过程活动,活动类型是 SqlServerStoredProcedure
linkedServiceName 引用在数据工厂中注册为链接服务的 Azure SQL 数据库Azure Synapse AnalyticsSQL Server。 若要了解此链接服务,请参阅计算链接服务一文。
存储过程名称 指定要调用的存储过程的名称。
存储过程参数 指定存储过程的参数值。 使用 "param1": { "value": "param1Value","type":"param1Type" } 传递数据源支持的参数值及其类型。 如果需要为参数传递 null,请使用 "param1": { "value": null }(全部小写)。

参数数据类型映射

为参数指定的数据类型是映射到你使用的数据源中的数据类型的内部服务类型。 可以在连接器文档中找到所述数据源的数据类型映射。 例如:

参阅以下文章了解如何以其他方式转换数据: