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

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

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

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

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

注意

如果不熟悉 Azure 数据工厂,请在阅读本文之前,先通读 Azure 数据工厂简介,并学习以下教程:教程:转换数据。 若要详细了解 Synapse Analytics,请阅读什么是 Azure Synapse Analytics

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

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

重要

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

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

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

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

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

使用 UI 创建存储过程活动

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

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

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

    Shows the UI for a Stored Procedure activity.

  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 属性:

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

参数数据类型映射

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

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