3

皆さん、

db で指定されたテーブルを監視するには、数ミリ秒 (10 ~ 20 ミリ秒) ごとにこれをポーリングしています。

ポーリングの代わりに通知を受け取る可能性はありますか (私のシナリオでは遅すぎる SqlDependency を回避します)。

何か考えはありますか?

私のシナリオは.net + Sql Server 2008です

ありがとう!

4

5 に答える 5

1

これは、WCF/または Web サービスを呼び出す CLR ストアド プロシージャを使用して行うことができます。とても難しいことではありません。

これには実質的に 2 つの手順が必要です。

  1. データの変更。データを変更したら、データを clr ストアド プロシージャに送信する必要があります。最も簡単な方法は、1 つ以上の一時テーブルに書き込むことです。

  2. 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 コードです。このアプローチは非常に高速で信頼性が高いです。

于 2012-09-21T13:24:12.473 に答える
0

SqlChangeMonitor クラスを使用できますが、キャッシュされたデータのシナリオで SqlDependency をラップします。ただし、なぜこれを行いたいのかについて、あなたの質問は少しあいまいです。

于 2012-09-21T13:16:02.540 に答える
0

呼び出し元のアプリケーションを、代わりにキューに書き込むように変更できますか?

そうでない場合、 CLRストアドプロシージャを呼び出すデータベースのトリガーを推測しますか? これにより、必要なあらゆる種類のイベントが発生する可能性があります。

于 2012-09-21T13:19:04.150 に答える
0

通知が必要だとおっしゃっていますが(通知SqlDependencyは利用可能です)、おそらく即時通知は必要なく、変更を定期的に効率的に読み取ることでタスクが実行されます。もしそうなら、グーグルに行きChange Data Capture、そしてChange Tracking

于 2012-09-21T13:32:28.927 に答える