從 Azure Logic Apps 的工作流程連線至 SQL 資料庫
適用於:Azure Logic Apps (使用量 + 標準)
本操作指南說明如何使用 SQL Server 連接器,從 Azure Logic Apps 中的工作流程存取 SQL 資料庫。 您隨後可建立自動化工作流程以在 SQL 資料庫或其他系統中的事件觸發時執行,並執行動作以管理 SQL 資料和資源。
例如,您的工作流程可執行動作來取得、插入和刪除資料,也可執行 SQL 查詢和預存程序。 您的工作流程可檢查非 SQL 資料庫中的新記錄、執行一些處理工作、使用結果以在 SQL 資料庫中建立新記錄,以及傳送新紀錄的電子郵件警示。
若您不熟悉 Azure Logic Apps,請檢閱下列開始使用文件:
支援的 SQL 版本
SQL Server 連接器支援下列 SQL 版本:
連接器技術參考
根據邏輯應用程式類型和主機環境,SQL Server 連接器有不同版本。
邏輯應用程式 | Environment | 連接器版本 |
---|---|---|
耗用 | 多租用戶 Azure Logic Apps | 受控連接器,其顯示在連接器資源庫的 [執行階段]>[共用] 下。 如需詳細資訊,請參閱下列文件: - SQL Server 受控連接器參考 - Azure Logic Apps 的受控連接器 |
標準 | 單一租用戶 Azure Logic Apps 和 App Service 環境 v3 (僅限 Windows 方案) | 受控連接器 (顯示於連接器資源庫的 [執行階段]>[共用] 下) 和內建連接器 (顯示於連接器資源庫的 [執行階段]>[應用程式內] 下,並且以服務提供者為基礎)。 內建連接器在以下幾方面有所不同: - 內建連接器可以使用連接字串直接連線至 SQL 資料庫並存取 Azure 虛擬網路,而無需內部部署資料閘道。 如需詳細資訊,請參閱下列文件: - SQL Server 受控連接器參考 - SQL Server 內建連接器參考 - Azure Logic Apps 中的內建連接器 |
限制
如需詳細資訊,請參閱 SQL Server 受控連接器參考或 SQL Server 內建連接器參考。
必要條件
Azure 帳戶和訂用帳戶。 如果您沒有訂用帳戶,請註冊一個免費的 Azure 帳戶。
SQL Server 資料庫、Azure SQL Database 或 SQL 受控執行個體。
SQL Server 連接器需要資料表中有包含資料,如此連接器作業才能在被呼叫時傳回結果。 例如,如果您使用 Azure SQL Database,您可以使用隨附的範例資料庫來嘗試 SQL Server 連接器作業。
建立 SQL 資料庫連接所需的資訊,例如您的 SQL 伺服器和資料庫名稱。 如果您使用 Windows 驗證或 SQL Server 驗證來驗證存取,則也需要您的使用者名稱和密碼。 您通常可在連接字串中找到此資訊。
重要
如果使用直接從 Azure 入口網站複製的 SQL Server 連接字串,您必須手動將密碼新增至連接字串。 對於此字串之類的敏感性資訊,請務必使用最安全的可用驗證流程。 Microsoft 建議您盡可能使用受控識別驗證 Azure 資源的存取權,並指派具有最低必要權限的角色。
如果無法使用這項功能,請務必透過其他方法 (例如可與標準工作流程中的應用程式設定搭配使用的 Azure Key Vault) 來保護連接字串。 然後您可以直接參考安全字串,例如連接字串和金鑰。 類似於您可以於部署期間定義環境變數的 ARM 範本,您可以在標準邏輯應用程式工作流程定義中定義應用程式設定。 然後,您可以擷取動態產生的基礎結構值,例如連線端點、儲存體字串等等。 如需詳細資訊,請參閱 Microsoft 身分識別平台的應用程式類型。
針對 Azure 中的 SQL 資料庫,連接字串的格式如下:
Server=tcp:{your-server-name}.database.windows.net,1433;Initial Catalog={your-database-name};Persist Security Info=False;User ID={your-user-name};Password={your-password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
若要在 Azure 入口網站中尋找此字串,請開啟資料庫。
在資料庫功能表下的 [屬性],請選取 [連接字串]。
針對內部部署的 SQL 伺服器,連接字串的格式如下:
Server={your-server-address};Database={your-database-name};User Id={your-user-name};Password={your-password};
在標準工作流程中,若要使用 SQL 內建觸發程序,您必須在要使用觸發程序的資料表中啟用變更追蹤。 如需詳細資訊,請參閱啟用和停用變更追蹤。
您要在其中存取 SQL 資料庫的邏輯應用程式工作流程。 若要使用 SQL Server 觸發程序啟動工作流程,必須從空白工作流程開始。 若要使用 SQL Server 動作,請使用觸發程序來啟動工作流程。
若要連線至內部部署的 SQL 伺服器,請根據擁有的「使用量」或「標準」邏輯應用程式工作流程,套用下列其他需求。
使用量工作流程
在多租用戶 Azure Logic Apps 中,您需要在本機電腦上安裝的內部部署的資料閘道和已在 Azure 中建立的資料閘道資源。
標準工作流程
您可使用 SQL Server 內建連接器或受控連接器。
若要對邏輯應用程式使用 Microsoft Entra 驗證或受控識別驗證,您必須設定 SQL Server 以使用這些驗證類型。 如需詳細資訊,請參閱驗證 - SQL Server 受控連接器參考。
若要使用內建連接器,您可使用受控識別、Microsoft Entra ID 或連接字串來驗證連線。 您可在連接字串中指定參數,藉以調整連線共用。 如需詳細資訊,請參閱連線共用。
若要使用 SQL Server 受控連接器,請遵循與多租用戶 Azure Logic Apps 中使用量邏輯應用程式工作流程相同的需求。 如需其他連接器需求,請參閱SQL Server 受控連接器參考。
新增 SQL Server 觸發程序
下列步驟會使用 Azure 入口網站進行,但若搭配適當的 Azure Logic Apps 延伸模組,則也可以使用下列工具來建立邏輯應用程式工作流程:
- 取用工作流程: Visual Studio Code
- 標準工作流程:Visual Studio Code
在 Azure 入口網站上,於設計工具中開啟您的使用量邏輯應用程式和空白工作流程。
在設計工具中的搜尋方塊下,選取 [標準]。 然後,依照這些一般步驟新增您想要的 SQL Server 受控觸發程序。
此範例會繼續執行名為項目已建立時的觸發程序。
在出現提示時,提供您的連線資訊。 完成時,選取建立。
在觸發程序資訊方塊出現後,提供您選取的觸發程序所需的必要資訊。
就此範例而言,請在名為 [建立項目時] 的觸發程序中,提供 SQL 伺服器名稱和資料庫名稱的值 (如果先前未提供)。 若不提供值,可從 [資料表名稱]清單中選取想使用的資料表。 選取 [頻率] 和 [間隔] 以設定觸發程序檢查是否有新項目的排程。
若有任何其他屬性可供此觸發程序使用,請開啟 [新增參數] 清單,然後選取與您的案例有關的屬性。
此觸發程序只會傳回所選資料表的一個資料列而已。 若要執行其他工作,請新增 SQL Server 連接器動作,或新增其他動作以執行您在邏輯應用程式工作流程中所需的下一個工作。
例如,若要檢視這個資料列中的資料,您可以新增其他動作,用來建立一個檔案 (內容包含傳回資料列的欄位),然後再傳送電子郵件警示。 若要深入了解此連接器的其他可用動作,請參閱 SQL Server 受控連接器參考。
完成後,請儲存您的工作流程。 在設計師工具列上選取儲存。
當您儲存工作流程時,此步驟會自動將您的更新發佈至已部署的邏輯應用程式,在 Azure 中為即時。 僅使用觸發程序時,工作流程只會根據指定排程來檢查 SQL 資料庫。 您必須新增動作以回應觸發程序。
新增 SQL Server 動作
下列步驟會使用 Azure 入口網站,但搭配適當的 Azure Logic Apps 擴充功能,您也可以使用下列工具來建置邏輯應用程式工作流程:
- 取用工作流程: Visual Studio Code
- 標準工作流程:Visual Studio Code
在此範例中,邏輯應用程式工作流程會透過循環觸發程序來啟動,並且會呼叫動作以從 SQL 資料庫取得資料列。
在 Azure 入口網站上,於設計工具中開啟您的使用量邏輯應用程式和工作流程。
在設計工具中,依照這些一般步驟新增您想要的 SQL Server 受控動作。
此範例會繼續執行名為取得資料列的動作,取得單一記錄。
在出現提示時,提供您的連線資訊。 完成時,選取建立。
在動作資訊方塊出現後,從 [資料表名稱] 清單中選取您要使用的資料表。 在 [資料列識別碼] 屬性中,輸入所需記錄的識別碼。
在此範例中,資料表名稱為 SalesLT.Customer。
此動作只會傳回所選資料表的一個資料列而已。 若要檢視此資料列中的資料,請新增其他動作。 例如,這類動作可能會建立檔案、包含傳回資料列的欄位,以及將檔案儲存在雲端儲存體帳戶中。 若要深入了解此連接器的其他可用動作,請參閱連接器的參考頁面。
完成後,請儲存您的工作流程。 在設計師工具列上選取儲存。
連接到您的資料庫
當您新增連線至服務或系統的觸發程序或動作,而且您沒有現有的或作用中連線時,Azure Logic Apps 會提示您提供連線資訊,並根據連線類型而有所不同,例如:
- 您的帳戶認證
- 用於連線的名稱
- 伺服器或系統的名稱
- 要使用的驗證類型
- 連接字串
在提供此資訊之後,請根據目標資料庫繼續進行下列步驟:
連線至 Azure SQL Database 或 SQL 受控執行個體
若要在未使用內部部署的資料閘道時存取 SQL 受控執行個體,您必須設定 SQL 受控執行個體上的公用端點。 公用端點會使用連接埠 3342,因此請確保在從邏輯應用程式建立連線時指定此連接埠號碼。
在連線資訊方塊中,完成下列步驟:
針對 [連線名稱],請提供要用於連線的名稱。
針對 [驗證類型],請選取 Azure SQL Database 或 SQL 受控執行個體中資料庫上所需並啟用的驗證:
驗證 描述 連接字串 - 僅在使用 SQL Server 內建連接器的標準工作流程中支援。
- 需要 SQL 伺服器和資料酷的連接字串。Active Directory OAuth - 僅在使用 SQL Server 內建連接器的標準工作流程中支援。 如需詳細資訊,請參閱下列文件:
- SQL Server 連接器的驗證
- 啟用 Open Authorization with Microsoft Entra ID (Microsoft Entra ID OAuth)
- OAuth with Microsoft Entra IDLogic Apps 受控識別 - 支援使用 SQL Server 受控連接器。 在標準工作流程中,此驗證類型適用於 SQL Server 內建連接器,但選項會改名為受控識別。
- 需要下列項目:
--- 邏輯應用程式資源上啟用的有效受控識別並有資料的存取權。
--- SQL DB 參與者 角色對 SQL Server 資源的存取權
--- 參與者 對包含 SQL Server 資源的資源群組存取權。
如需詳細資訊,請參閱下列文件:
- SQL Server 連接器的受控識別驗證
- SQL - 伺服器層集角色服務主體 (Microsoft Entra 應用程式) - 支援使用 SQL Server 受控連接器。
- 需要 Microsoft Entra 應用程式和服務主體。 如需詳細資訊,請參閱使用 Azure 入口網站建立可存取資源的 Microsoft Entra 應用程式和服務主體。Microsoft Entra 整合式 - 支援使用 SQL Server 受控連接器。
- 需要 Microsoft Entra 中有效的受控識別,其已在邏輯應用程式資源上啟用且有資料庫的存取權。 如需詳細資訊,請參閱下列主題:
- Azure SQL 安全性概觀 - 驗證
- 將資料庫存取授權至 Azure SQL - 驗證和授權
- Azure SQL - Microsoft Entra 整合式驗證SQL Server 驗證 - 支援使用 SQL Server 受控連接器。
- 需要下列項目:
--- 針對連線,Azure 中先前建立的資料閘道資源,無論邏輯應用程式是否位於多租用戶 Azure Logic Apps。
--- SQL Server 資料庫中建立和儲存的有效使用者名稱和強式密碼。 如需詳細資訊,請參閱下列主題:
- Azure SQL 安全性概觀 - 驗證
- 將資料庫存取授權至 Azure SQL - 驗證和授權下列範例顯示連線資訊方塊可能顯示的方式 (如果您使用 SQL Server 受控連接器並選取 Microsoft Entra 整合式驗證):
使用量工作流程
標準工作流程
在選取 [Microsoft Entra 整合式] 之後,選取 [登入]。 根據使用的 Azure SQL Database 或 SQL 受控執行個體,選取您的使用者認證以進行驗證。
針對資料庫選取這些值:
屬性 必要 描述 伺服器名稱 Yes SQL 伺服器的位址,例如 Fabrikam-Azure-SQL.database.windows.net 資料庫名稱 Yes SQL 資料庫的名稱,例如 Fabrikam-Azure-SQL-DB 資料表名稱 Yes 所要使用的資料表,例如 SalesLT.Customer 提示
若要提供資料庫和資料表資訊,選項如下:
在資料庫的連接字串中尋找此資訊。 例如,在 Azure 入口網站中,尋找並開啟資料庫。 在資料庫功能表上,選取 [連接字串] 或 [屬性],其中您可找到下列字串:
Server=tcp:{your-server-address}.database.windows.net,1433;Initial Catalog={your-database-name};Persist Security Info=False;User ID={your-user-name};Password={your-password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
預設會篩選出系統資料庫中的資料表,因此當您選取系統資料庫時,這些資料表可能不會自動顯示。 或者,您也可在自資料庫清單選取 [輸入自訂值] 之後,手動輸入資料表名稱。
此資料庫訊息方塊會與下列範例相似:
使用量工作流程
標準工作流程
現在,請繼續進行新增 SQL 觸發程序或新增 SQL 動作中尚未完成的步驟。
連線至內部部署 SQL Server
在連線資訊方塊中,完成下列步驟:
若需要內部部署的資料閘道以連線至內部部署 SQL 伺服器,請確保您已完成這些必要條件。
若未完成,當您建立連線時,資料閘道資源不會顯示在 [連線閘道] 清單中。
針對驗證類型,選取 SQL Server 上必要且啟用的驗證:
驗證 描述 SQL Server 驗證 - 支援使用 SQL Server 受控連接器和 SQL Server 內建連接器。
- 需要下列項目:
--- 針對連線,Azure 中先前建立的資料閘道資源,無論邏輯應用程式是否位於多租用戶 Azure Logic Apps。
--- SQL Server 中建立和儲存的有效使用者名稱和強式密碼。
如需詳細資訊,請參閱SQL Server 驗證。Windows 驗證 - 支援使用 SQL Server 受控連接器。
- 需要下列項目:
--- 針對連線,Azure 中先前建立的資料閘道資源,無論邏輯應用程式是否位於多租用戶 Azure Logic Apps。
--- 有效的 Windows 使用者名稱和密碼,用於透過 Windows 帳號來確認您的身分識別。
如需詳細資訊,請參閱 Windows 驗證。選取或提供 SQL 資料庫的下列值:
屬性 必要 描述 SQL 伺服器名稱 Yes SQL 伺服器的位址,例如 Fabrikam-Azure-SQL.database.windows.net
SQL 資料庫名稱 Yes SQL Server 資料庫的名稱,例如 Fabrikam-Azure-SQL-DB
使用者名稱 Yes SQL 伺服器和資料庫的使用者名稱 密碼 Yes SQL 伺服器和資料庫的密碼 訂用帳戶 是,若為 Windows 驗證 Azure 中先前建立資料閘道資源的 Azure 訂帳戶用 連線閘道 是,若為 Windows 驗證 Azure 中先前建立資料閘道資源的名稱
秘訣:如果您的閘道未出現在清單中,請檢查您是否正確設定閘道。提示
您可在資料庫的連接字串中找到此資訊:
Server={your-server-address}
Database={your-database-name}
User ID={your-user-name}
Password={your-password}
下列範例顯示連線資訊方塊可能顯示的方式 (如果選取 Windows 驗證)。
使用量工作流程
標準工作流程
當您準備好時,選取 [建立]。
現在,請繼續進行新增 SQL 觸發程序或新增 SQL 動作中尚未完成的步驟。
處理大量資料
有時,您使用的結果集過大,導致連接器不會同時傳回所有結果。 或是,您想要更充分控制結果集的大小和結構。 下列清單包含可處理這些大型結果集的一些方法:
為協助您將結果分成較小的集合來管理,請開啟 [分頁]。 如需詳細資訊,請參閱使用分頁取得大量資料、記錄和項目。 如需詳細資訊,請參閱可供使用 Logic Apps 傳輸大量資料的 SQL 分頁。
建立預存程序,以您想要的方式來組織結果。 SQL Server 連接器提供許多後端功能,可讓您使用 Azure Logic Apps 存取,以便更輕鬆地將使用 SQL 資料庫資料表的商務工作自動化。
當 SQL 動作取得或插入多個資料列時,邏輯應用程式可在這些限制內使用 Until 迴圈,逐一查看這些資料列。 但是,當邏輯應用程式必須處理的記錄集很大時 (例如,數千或數百萬個資料列),您應將資料庫的呼叫成本降至最低。
為了以所需方式組織結果,您可以轉而建立預存程序,其可在 SQL 執行個體中執行,並使用 SELECT - ORDER BY 陳述式。 此解決方案可讓您對結果的大小和結構擁有更好的控制能力。 邏輯應用程式會使用 SQL Server 連接器的執行預存程序動作來呼叫預存程序。 如需詳細資訊,請參閱 SELECT - ORDER BY 子句。
注意
SQL Server 連接器有少於 2 分鐘的預存程序逾時限制。 有些預存程序可能需要超過此限制才能完成,因而造成
504 Timeout
錯誤。 您可使用 SQL 完成觸發程序、原生 SQL 傳遞查詢、狀態資料表和伺服器端工作,藉以解決此問題。針對這項工作,您可以使用 Azure SQL Database 的 Azure 彈性作業代理程式。 若是內部部署 SQL Server 和 SQL 受控執行個體,您可以使用 SQL Server Agent。 若要深入了解,請參閱在 SQL Server 連接器中處理 Azure Logic Apps 的長時間執行預存程序逾時。
處理動態大量資料
當您使用 SQL Server 連接器來呼叫預存程序時,傳回的輸出有時會是動態。 在此情況下,請遵循下列步驟:
在 Azure 入口網站上,於設計工具中開啟您的邏輯應用程式和工作流程。
執行測試回合來檢視輸出格式。 複製並儲存範例輸出。
在設計工具中,在您呼叫預存程序的動作下,新增名為剖析 JSON 的內建動作。
在剖析 JSON 動作中,選取 [使用範例承載來產生結構描述]。
在 [輸入或貼上範例 JSON 承載] 方塊中,貼上範例輸出並選取 [完成]。
注意
如果您收到 Azure Logic Apps 無法產生結構描述的錯誤,請檢查您輸出範例的語法格式是否正確。 如果您仍無法產生結構描述,請在 [結構描述] 方塊中手動輸入結構描述。
完成後,請儲存您的工作流程。
若要參考 JSON 內容屬性,請選取所要參考這些屬性的編輯方塊,以讓動態內容清單顯示。 在清單的剖析 JSON 標題下,選取所要 JSON 內容屬性的資料權杖。