2009-08-30 17 views
2

This question SQL 2005と2008の可能なソリューションについては説明していますが、SQL 2000の解決策はまだありません。SQL Serverでテーブルの変更を監視する方法

データベーステーブルの特定のフィールドを監視して変更が発生したときにアプリケーションに通知する方法が必要です。ブロードキャストメッセージとしてローカルネットワーク上で爆破することができます。アラートとして表示する(特定の閾値に達する株式市場データに類似したものを考える)。

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

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

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

アイデア?

編集:私は2000年のサポートを落とすことについて考えてきましたが、それは本当に私の問題を解決していません

。私は何年もの間働き続ける解決策を望んでいます。多くのマイクロソフトテクノロジの1つの問題は、マイクロソフトテクノロジがサポートを提供しないことです。たとえば、通知サービスは私が必要とすることをしますが、2008年には非推奨とし、次のバージョンでは利用できなくなります。だから、私は固執する可能性の高いソリューションを探しています。

答えて

5

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

あなたはアップデートのWebページ、通知を呼び出すトリガーを持つことができます。

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

代替案

、キューに書き込みます。 (私はMSMQと恋に落ちています)。その後、その待ち行列に待っているものを持って、あなたは 'リアルタイム'でメッセージを取得します。繰り返しますが、上記のように更新の頻度が高くなります。

より良い計画

あなたはその後、ポーリング「tblUpdatedThings」テーブルへの投稿データをそのトリガーを持っています。しかし、私はあなたが投票したくないことを知っています。それにもかかわらず、私はこれを、私が記述する理由のために、より良く考える。

2

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

関連する問題