.NETクライアントアプリケーションからSQL Serverテーブルに新しい行が表示されるのを待つ方法はありますか。SQL Server:新しい行を待ちます
背景:テーブルに基づいてメッセージキューを構築したいと思います。私はメッセージを構造化し強く型付けしたいのでService Brokerを使いたくありません。通常のテーブルを使用すると、他のテーブルとの関係も持つことができます。
.NETクライアントアプリケーションからSQL Serverテーブルに新しい行が表示されるのを待つ方法はありますか。SQL Server:新しい行を待ちます
背景:テーブルに基づいてメッセージキューを構築したいと思います。私はメッセージを構造化し強く型付けしたいのでService Brokerを使いたくありません。通常のテーブルを使用すると、他のテーブルとの関係も持つことができます。
通常の方法ではポーリングを使用しますが、直接的なイベントが本当に必要な場合は、SqlDependency
クラスを使用して、クエリの結果が変更されたときにイベントを取得できます。
私たちのアプリケーションでは、System.Threading.Timerを使用してデータベーステーブルをポーリングします。新しいメッセージが利用可能になると、それは処理されています。処理が成功すると、DBからメッセージが削除されます。
あなたは投票するか、通知を受ける必要があります。
ポーリングでは、クライアントは、述部を使用して、またはcount(*)
のために、定期的にテーブルをクエリする必要があります。これはおそらく大きな解決策ではありません。
テーブルにトリガーを入れてクライアントのリスナーにメッセージを送信するのは、安くて便利な通知システムです。
* GASP *「待っている」テーブルでトリガーし、新しいテーブルが消えるのを待っているジョブ。 Service Brokerは本当にすばらしいです...ちょうど言っています。 – SQLMason
ええ、Service Brokerは完璧ですが、キューとして素敵なテーブルを使用することはできません(厄介なXMLブロブを使用する必要があります)。 – usr
キューにはprocを書くことができます。XMLに問い合わせることができます(あまりうまくいっていません) – SQLMason