根據此article和this,CLR存儲過程,查詢通知,擴展存儲過程都不可用Azure SQL上。
所以我認爲我們不能通過使用sql server觸發器直接刪除blob。
單程: 您可以在azure webjob中使用隊列觸發器來刪除sql記錄和blob文件。
您可以在Web應用程序的隊列中添加消息(包括blob文件名)或使用Azure存儲瀏覽器。
然後在webjob中,您可以根據此隊列消息編寫代碼來刪除blob文件和sql記錄。
更多有關如何在蔚藍webjob使用隊列觸發的詳細信息,您可以參考以下文章:https://docs.microsoft.com/en-us/azure/app-service-web/websites-dotnet-webjobs-sdk-storage-queues-how-to
另一種方式:
您可以啓用變化對特定表跟蹤,讓你可以使用計劃webjob發現最新的變化(即刪除)到表中,並根據記錄刪除blob中的文件。
更多細節,你可以參考下面的查詢和文章:
1.啓用更改跟蹤:
ALTER DATABASE yourdatabase
SET CHANGE_TRACKING = ON
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)
ALTER TABLE YourBolbTable
ENABLE CHANGE_TRACKING
WITH (TRACK_COLUMNS_UPDATED = ON)
2.Select已變更記錄:
SELECT
*
FROM CHANGETABLE(CHANGES YourBlobTable, 0) AS ChTbl;
結果: ![enter image description here](https://i.stack.imgur.com/wiVaP.png)
注意:我建議你ld使用blob名稱作爲主鍵,因爲如果刪除記錄,則更改跟蹤表只記錄主鍵。
有關如何使用更改跟蹤表的更多詳細信息,請參閱this article。
然後您可以使用timertrigger或scheduled webJob]每分鐘獲取表格更改的記錄。
最後,您可以使用Azure存儲SDK根據此記錄在webjob中刪除blob。
你看過Azure函數嗎? https://azure.microsoft.com/en-us/services/functions/ –
我已經有一個應用服務,我必須支付額外的費用嗎? 「基於定時器的處理」功能可以工作。 – juliernes