0

ファイルがAzureブロブストレージにアップロードされ、生成されたファイル名がAzureのSQL Serverデータベースのテーブルに保存されるASP.NET MVCアプリケーションがあります。私はデータベース内のファイルを直接削除したいので、削除トリガーでAzureブロブストレージ内のファイルを削除できるようにします。SQL Azureでトリガー削除からAzure blobストレージ内のファイルを削除する方法はありますか?

はたぶんPowerShellは動作しますが、それは「master.dbo.xp_cmdshell」内のデータベースおよび/またはサーバー名へのSQL ServerのAzureの

リファレンスによってサポートされていないと思われるでしょう、このバージョンのSQL Serverではサポートされていません。

ありがとう

+0

Azure関数を見ましたか? https://azure.microsoft.com/en-us/services/functions/ –

+0

私はすでにApp Serviceを持っていますが、追加料金を支払う必要はありますか? 「タイマーベースの処理」機能が機能する可能性があります。 – juliernes

答えて

0

このarticlethisによれば、CLRストアドプロシージャ、クエリ通知、拡張ストアドプロシージャはすべてAzure SQLでは利用できません。

私は、SQL Serverのトリガーを使用してBLOBを直接削除できないと思います。

片道: azure webjobでキュートリガを使用して、SQLレコードとBLOBファイルを削除できます。

WebアプリケーションのキューまたはAzureストレージエクスプローラを使用して、メッセージ(BLOBファイル名を含む)を追加できます。

次に、Webジョブで、このキューメッセージに従ってBLOBファイルとSQLレコードを削除するコードを記述することができます。あなたは記事下のを参照してください可能性が紺碧webjobにキュー・トリガーを使用する方法についての

詳細:https://docs.microsoft.com/en-us/azure/app-service-web/websites-dotnet-webjobs-sdk-storage-queues-how-to

別の方法:

スケジュール使用できるようにするには、特定のテーブルの上に変更の追跡を可能にすることができますwebjobはテーブルへの最新の変更(すなわち削除)を検出し、BLOB内のファイルを削除するレコードに従って検出します。クエリおよび記事下記を参照してください可能性があり

詳細:

1.Enable変更の追跡:

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

注意:私はあなたにお勧めしますレコードを削除すると、チェンジトラッキングテーブルはプライマリキーを記録するだけなので、BLOB名をプライマリキーとして使用します。

変更追跡テーブルの使用方法の詳細は、this articleを参照してください。

次に、分単位でテーブルを変更するには、timertriggerまたはscheduled webJobを使用できます。

最後に、azure storage SDKを使用してwebjobのこのレコードに従ってBLOBを削除できます。

+0

2番目のオプションで私を助けてくれました。私はファイルを保存するいくつかのテーブルを持っているので、変更トラッキングを有効にするのではなく、すべてのテーブルから削除されたすべてのファイルを格納する単一のテーブルを作成しました。その後、スケジュールwebjobは、そのテーブルに行があるかどうかをチェックして、ファイルと行を削除するだけです。あなたの詳細な答えをありがとう。 – juliernes

関連する問題