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

適用於: Azure Data Factory Azure Synapse Analytics

提示

Data Factory in Microsoft Fabric 是下一代的 Azure Data Factory,擁有更簡單的架構、內建 AI 及新功能。 如果你是資料整合新手,建議先從 Fabric Data Factory 開始。 現有的 ADF 工作負載可升級至 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 DatabaseSQL Server。 在使用 copy activity 將資料匯入至 Azure Synapse Analytics 時,不支援觸發儲存程序。 不過,你可以利用儲存程序活動在 Azure Synapse Analytics 中呼叫儲存程序。

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

當預存程式具有輸出參數時,不要使用預存程式活動,請使用查閱活動和腳本活動。 預存程序活動尚不支援使用輸出參數呼叫 SP。

如果您使用預存程序活動呼叫具有輸出參數的預存程序,則會發生下列錯誤。

針對 SQL Server 執行失敗。 如需進一步支援,請聯絡 SQL Server 團隊。 Sql 錯誤號碼:201。 錯誤訊息:程序或函式 'sp_name' 預期未提供的參數 '@output_param_name'。

使用 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 DatabaseAzure Synapse AnalyticsSQL Server。 若要深入了解此已連結的服務,請參閱計算已連結的服務一文。 Yes
儲存程序名稱 指定要叫用的預存程序名稱。 Yes
儲存過程參數 指定預存程序參數的值。 使用 "param1": { "value": "param1Value","type":"param1Type" } 來傳遞資料來源所支援的參數值及其類型。 如果您需要為參數傳遞 Null,請使用 "param1": { "value": null } (全部小寫)。 No

參數數據類型映射

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

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