2

この質問はかなり前に出されたもので、SQL 2005 および 2008 の可能な解決策をカバーしていますが、まだ一般的すぎる SQL 2000 の適切な解決策がありません。

データベース テーブルの特定のフィールドの変更を監視し、これらの変更が発生したときにアプリケーションに通知する方法が必要です。これにより、クライアントを持つすべてのユーザーがそれらをリッスンし、それらをアラート (株式市場のデータが特定のしきい値に達するようなものを考えてください)。

いくつかの理由から、データベースをポーリングしたくありません。1) サーバーに追加の負荷を加えたくありません。2) ポーリング頻度が期限切れになるのを待つよりも、ほぼリアルタイムで通知を受け取りたい。

ここで、データベースを更新するアプリケーションにロジックを入れることができますが、データは Web を含む複数のソースから更新される可能性があり、DMZ 境界を越えて通知を送信する Web サーバーに対処したくありません。 20 の異なるアプリケーションでこれを維持する必要はありません (より圧倒的な問題)。

拡張ストアド プロシージャとトリガーを使用して SQL 2000 でこれを行ったのを見たことがありますが、XP はクロス プラットフォームにするのが難しいようで、SQL 2005 および 2008 にインストールすると壊れます。よくわかりませんが、SQL 2000 以降のバージョンで動作するものを探しています。

何か案は?

編集:

2000 のサポートをやめることを考えましたが、それでも問題は解決しません。今後何年にもわたって機能し続けるソリューションが必要です。多くの Microsoft テクノロジの問題の 1 つは、それらのテクノロジのサポートが終了することです。たとえば、通知サービスは私が必要とすることを行いますが、2008 年に廃止することを決定し、次のバージョンでは利用できなくなります。だから私は固執する可能性が高い解決策を探しています。

4

2 に答える 2

5

非常にシンプルなソリューション

更新を通知するWebページを呼び出すトリガーを設定できます。

サーバーが何らかの理由でWebにアクセスできない場合、挿入操作が非常に遅くなる可能性があるため、これは非常に悪い場合があります。また、挿入の頻度によっては、同様に悪い場合があります。

代替案

トリガーで、キューに書き込みます。(私はたまたまMSMQが大好きです)。次に、そのキューに対して何かを待っていると、「リアルタイム」でメッセージが表示されます。繰り返しになりますが、上記のように、更新の頻度が高くなりがちです。

より良い計画

データを「tblUpdatedThings」テーブルに投稿するトリガーを用意し、それをポーリングします。しかし、私はあなたが投票したくないことを知っています。とにかく、私が説明する理由から、これはより良いと思います。

于 2009-08-30T01:01:04.193 に答える
2

ソリューションをデータベースに入れたいが、データベースに依存しないようにしたい。両方の方法を持つことはできません。一つを選ぶ。データベースから独立したい場合は、ソースがデータベースに直接書き込むことを許可しないでください。ただし、制御する中央サービスを呼び出して、関心のあるイベントをトラップできる場所にします。ポーリングなしでデータベース機能を使用する場合は、データベースが呼び出すコードをデプロイする必要があり、コードをサポートする将来のバージョンに依存することになります。

于 2009-08-30T02:59:41.527 に答える