在 Azure Data Factory 或 Synapse Analytics 中使用 SQL Server 預存程式活動轉換數據

適用於: Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的單一分析解決方案。 Microsoft Fabric 涵蓋從數據移動到數據科學、即時分析、商業智慧和報告等所有專案。 瞭解如何 免費啟動新的試用版

您可以使用 Data Factory 或 Synapse 管線 中的數據轉換活動,將原始數據轉換成預測和深入解析。 預存程式活動是管線支援的其中一個轉換活動。 本文以轉換數據一文為基礎,提供數據轉換和支援的轉換活動的一般概觀。

注意

如果您不熟悉 Azure Data Factory,請閱讀 Azure Data Factory 簡介並執行教學課程:教學課程: 在閱讀本文之前轉換數據 。 若要深入瞭解 Synapse Analytics,請閱讀 什麼是 Azure Synapse Analytics

您可以使用預存程式活動,在您的企業或 Azure 虛擬機上叫用下列其中一個資料存放區中的預存程式:

  • Azure SQL Database
  • Azure Synapse Analytics
  • SQL Server Database。 如果您使用 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 複製數據時,您可以在複製活動中設定 SqlSource,以使用 sqlReaderStoredProcedureName 屬性叫用預存程式從源資料庫讀取數據。 如需詳細資訊,請參閱下列連接器文章:Azure SQL 資料庫SQL ServerAzure Synapse Analytics

當預存程式具有 Output 參數,而不是使用預存程式活動時,請使用查閱 acitivty 和 Script 活動。 預存程式活動尚不支援使用 Output 參數呼叫 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 活動的名稱 Yes
description 描述活動用途的文字 No
type 針對預存程式活動,活動類型為 SqlServerStoredProcedure Yes
linkedServiceName Azure SQL 資料庫 或 Azure Synapse AnalyticsSQL Server 的參考,這些服務已在 Data Factory 中註冊為鏈接服務。 若要瞭解此連結服務,請參閱 計算連結服務 一文。 Yes
storedProcedureName 指定要叫用的預存程式名稱。 Yes
storedProcedureParameters 指定預存程序參數的值。 使用 "param1": { "value": "param1Value","type":"param1Type" } 傳遞數據源所支援的參數值及其類型。 如果您需要傳遞參數的 Null,請使用 "param1": { "value": null } (所有小寫)。 No

參數數據類型對應

您為 參數指定的數據類型是對應至所使用資料來源中資料類型的內部服務類型。 您可以找到連接器檔中所述資料來源的數據類型對應。 例如:

請參閱下列文章,說明如何以其他方式轉換資料: