[Azure] 使用Logic App排程對資料庫進行操作

最近在工作上有一個很基本但是很重要的需求
就是能夠在半夜的時候將資料庫中的LOG內容轉移到Storage,並刪除現有資料
原本打算使用WebJob來處理的,但是後來想想,這樣簡易的功能可以直接使用Logic App在不寫程式的情況下完成他

使用Logic App來操作資料庫,下面分兩部份來進行說明,第一部份是將現有資料轉出到Storage,第二部份則是清除現有資料

1.首先,先在Azure上建立一個新的Logic App服務

2.接著輸入這個LogicApp的名稱,我先命名為BackupDataAndClearn

3.建立完成後,進入這個新增加的LogicApp服務,並點選啟動程序為"週期"

4.在第一個步驟中,必須設定要在什麼時候啟動這個LogicApp,每隔多久要執行一次。在這裡我先設定每一天執行一次,也指定時區是+8,下次的開始時間是2020-07-30的凌晨

如果想在設定完成後馬上看到測試結果,可以設定間隔1分鐘就可以快速的看到結果

5.接著在建立新步驟的動作中,選擇SQL Server作為步驟的標的SQL Server的預設範本動作有很多,由於我們要作的是匯出資料到Storage,所以選擇"取得多個資料列"的項目
下一步是給這個連線一個名稱,並且選擇要連到哪一個資料庫並給予連線用的使用者名稱與密碼。如果資料庫存在同一個訂閱帳戶下的話,就可以直接選擇而無需手動輸入連線資訊這個步驟最後一步,就是輸入要取得資料列的資料表的名稱

6.下一步,建立一個新步驟,並選擇"Azure Blob儲存體"在Azure Blob的動作中,選擇"建立Blob"的動作

7.在Blob儲存體中的設定上,必須輸入要存放的Blob資料夾路徑、Blob名稱以及Blob內容,在內容的動態項目中,請選擇"項目清單"才能完整的把資料表中的記錄全部匯出

8.設定完之後,試著執行一次看看,可以看到已經順利完成執行了從Storage中可以看到Blob有被產生了內容也有產生出對應的JSON內容

到這裡,備份的動作就已經完成了,接下來我們要把刪除資料表的動作也加入到LogicApp中

1.在所有的動作之後,再新增一個動作,並選擇SQL Server,其動作設定為"立即刪除"

2.接著設定要刪除的資料表名稱,以及該資料表的主鍵欄位

3.設定完之後,就可以執行看看,看結果是如何從資料庫也可以看到,資料完全被刪除了

4.若是在刪除資料表的資料,是必須有下條件的話,那我會建議不要使用"立即刪除"這個動作,而是改用"執行SQL查詢"在SQL查詢中,可以直接下SQL語法,指定要刪除的內容以及條件,當然多個SQL語法也是可以的

以往有很多排程動作只能放在WebJob中執行的功能,現在都可以盡量嘗試在Logic App中進行設定與執行了,比起WebJob還必須建立一個WebApp並計算費用,不如使用LogicApp進行運行,成本還要來得更低也更有效率