業務問題:我們希望從數據庫中讀取多行(具有特定條件),迭代這些行並向該行中的電子郵件發送電子郵件,然後更新該行表明電子郵件已發送(以防止每天或每天多次向該人發送電子郵件)。Azure邏輯應用程序中的Sql連接器
我們所有的數據庫,服務器,wep應用程序等都使用windows azure。看到我們有應用服務,我們開始用創建邏輯應用的想法來研究這個問題。
簡單的邏輯應用流量:復發(每天一次)=> SqlConnector(StoredProcedure的或選擇語句)=>的foreach行(emailapi(row.email)=> SqlConnector(更新行))
併發症:
邏輯應用程序需要從我們的一個sql數據庫讀取。所以我們通過創建一個sql連接器來處理這個連接器,並且從這個連接器中我們可以公開存儲過程,表格等等。與sql連接器有關的主要問題是我們想要調用的存儲過程只是從表中選擇數據其中涉及sql函數,並且sql連接器無法生成邏輯應用程序讀取select語句返回的行所需的元數據。 sql連接器只能爲out參數或返回值生成元數據,所以我們無法通過其中任何一個返回多行。
下一個想法和第二個複雜因素是,因爲我們意識到我們不能調用這個存儲過程並獲取行,我們試圖通過sql連接器使用select語句來獲取行。這個方法的問題是我們的where子句必須有一個sql函數,並且這不被支持。
忽略併發症:
假設我們可以從數據庫中讀取這些特定的行,我們接着要遍歷這些行,這應該是可以通過在邏輯應用中的「重複」操作,併發送出去一封電郵。我們選擇使用自己的自定義api發送電子郵件(azure不提供我們的電子郵件服務SendWithUs的託管API)。該電子郵件的作品完全正常,我們能夠看到並從我們的azure邏輯應用程序調用我們的api端點。我們對這個api端點發送電子郵件的擔心是它不是最安全的。
我的問題:我們可以完成我們試圖用sql連接器完成的任務,還是應該尋找替代方案?
替代方法:將所有我們想要做的事情放在提供電子郵件端點的自定義API應用程序中。這將需要連接到數據庫,調用存儲過程,循環存儲過程的結果以發送電子郵件,然後更新發送了電子郵件的數據庫記錄。我們的邏輯應用程序在這一點上只會有一個重複觸發器,以及一個完成所有工作的api調用。但是,這個API端點需要儘可能安全,同時仍然可以從邏輯應用訪問。
請問這種方法能夠產生從返回的行的元數據?或者元數據只能從輸出參數/返回中生成。我們的存儲過程會返回很多行,根據我的理解,元數據不能從選擇的存儲過程中生成。我會使用「Get rows」,但我們使用的sql函數不被「Get rows」支持。 –