皆さん、
db で指定されたテーブルを監視するには、数ミリ秒 (10 ~ 20 ミリ秒) ごとにこれをポーリングしています。
ポーリングの代わりに通知を受け取る可能性はありますか (私のシナリオでは遅すぎる SqlDependency を回避します)。
何か考えはありますか?
私のシナリオは.net + Sql Server 2008です
ありがとう!
皆さん、
db で指定されたテーブルを監視するには、数ミリ秒 (10 ~ 20 ミリ秒) ごとにこれをポーリングしています。
ポーリングの代わりに通知を受け取る可能性はありますか (私のシナリオでは遅すぎる SqlDependency を回避します)。
何か考えはありますか?
私のシナリオは.net + Sql Server 2008です
ありがとう!
これは、WCF/または Web サービスを呼び出す CLR ストアド プロシージャを使用して行うことができます。とても難しいことではありません。
これには実質的に 2 つの手順が必要です。
データの変更。データを変更したら、データを clr ストアド プロシージャに送信する必要があります。最も簡単な方法は、1 つ以上の一時テーブルに書き込むことです。
clr ストアド プロシージャ。clr ストア プロシージャは、db に接続します。
「コンテキスト接続=true」
必要なストアド プロシージャにアクセスできるようにします。データをロードした後、サーバー (WCF/webservice) に送信します。CLR では、必要なサービス参照を追加するだけです。また、サーバー上で、サーバーが使用するいくつかの dll を登録する必要があります。
system.web
smdiagnostics
system.runtime.serialization
system.identitymodel
system.identitymodel.selectors
system.messagng
system.transactions.bridge
system.servicemodel
それ以外はすべて、WCF/Web サービスを呼び出すための単純な .NET コードです。このアプローチは非常に高速で信頼性が高いです。
SqlChangeMonitor クラスを使用できますが、キャッシュされたデータのシナリオで SqlDependency をラップします。ただし、なぜこれを行いたいのかについて、あなたの質問は少しあいまいです。
呼び出し元のアプリケーションを、代わりにキューに書き込むように変更できますか?
そうでない場合、 CLRストアドプロシージャを呼び出すデータベースのトリガーを推測しますか? これにより、必要なあらゆる種類のイベントが発生する可能性があります。
通知が必要だとおっしゃっていますが(通知SqlDependency
は利用可能です)、おそらく即時通知は必要なく、変更を定期的に効率的に読み取ることでタスクが実行されます。もしそうなら、グーグルに行きChange Data Capture
、そしてChange Tracking
。