透過使用 Azure Data Factory 或 Synapse Analytics 中的 SQL Server 儲存程序活動來轉換資料

適用於: Azure Data Factory Azure Synapse Analytics

提示

關於 Microsoft Fabric 資料工廠中等效的活動,請參見儲存程序活動。

您可以在 Data Factory 或 Synapse 管線中,使用資料轉換活動,將原始資料轉換及處理成預測與深入解析。 預存程序活動是管線支援的轉換活動之一。 本文是以轉換資料一文為基礎,提供資料轉換及所支援轉換活動的一般概觀。

注意

如果你是Azure Data Factory新手,請先閱讀Azure Data Factory並完成教學:Tutorial: transform data再閱讀本文。 想了解更多關於 Synapse Analytics 的資訊,請閱讀 什麼是 Azure Synapse Analytics。

您可以使用儲存程序活動(Stored Procedure Activity)在企業內的以下資料儲存庫或 Azure 虛擬機(VM)中呼叫儲存程序:

  • Azure SQL Database
  • Azure Synapse Analytics
  • SQL Server 資料庫。 如果你使用 SQL Server,請在與主機資料庫相同的電腦上安裝自架整合執行時,或是在有資料庫存取權的另一台電腦上。 Self-Hosted 整合執行時是一個元件,能以安全且受管理的方式,將本地/Azure虛擬機上的資料來源與雲端服務連結起來。 如需詳細資料,請參閱自我托管整合執行階段一文。

重要

當將資料複製到 Azure SQL Database 或 SQL Server 時,你可以在複製活動中設定 SqlSink,透過 sqlWriterStoredProcedureName 屬性來呼叫儲存程序。 關於該物業的詳細資訊,請參閱以下連接條目:Azure SQL Database、SQL Server。 在使用 copy activity 將資料匯入至 Azure Synapse Analytics 時,不支援觸發儲存程序。 不過,你可以利用儲存程序活動在 Azure Synapse Analytics 中呼叫儲存程序。

當從 Azure SQL Database、SQL Server 或 Azure Synapse Analytics 複製資料時,你可以在複製活動中設定 SqlSource,利用 sqlReaderStoredProcedureName 屬性呼叫儲存程序來讀取來源資料庫的資料。 欲了解更多資訊,請參閱以下連接器文章:Azure SQL Database、SQL Server、Azure Synapse Analytics

儲存程序活動不支援輸出參數。 若要執行一個能回傳輸出參數或結果的儲存程序,請使用 Lookup 或 Script 活動。

若使用儲存程序活動呼叫帶有輸出參數的儲存程序,會發生以下錯誤:

Execution fail against sql server. Please contact SQL Server team if you need further support. Sql error number: 201. Error Message: Procedure or function 'sp_name' expects parameter '@output_param_name', which was not supplied.

使用 UI 建立預存程序活動

若要在管線中使用預存程序活動,請完成下列步驟:

  1. 在管線 [活動] 窗格中搜尋 [預存程序],然後將 [預存程序] 活動拖曳至管線畫布。

  2. 在畫布上選取新的預存程序活動 (如未選取) 和其 [設定] 索引標籤以編輯詳細資料。

    顯示預存程式活動的UI。

  3. 選擇現有或建立新的連結服務,連結至 Azure SQL Database、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 屬性:

屬性 描述 必要
名稱 活動的名稱 Yes
說明 說明活動用途的文字 No
型別 對於預存程序活動,活動類型為 SqlServerStoredProcedure Yes
linkedServiceName 參考已在 Data Factory 中註冊為連結服務的 Azure SQL Database、Azure Synapse Analytics 或 SQL Server。 若要深入了解此已連結的服務,請參閱計算已連結的服務一文。 Yes
儲存程序名稱 指定要叫用的預存程序名稱。 Yes
儲存過程參數 指定預存程序參數的值。 使用 "param1": { "value": "param1Value","type":"param1Type" } 來傳遞資料來源所支援的參數值及其類型。 如果您需要為參數傳遞 Null,請使用 "param1": { "value": null } (全部小寫)。 No

參數數據類型映射

您為參數指定的資料類型,是對應至所用資料來源中資料類型的內部服務型別。 您可以在連接器文件中,找到資料來源的資料類型對應說明。 例如:

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