2012-04-06 5 views
2

.NETクライアントアプリケーションからSQL Serverテーブルに新しい行が表示されるのを待つ方法はありますか。SQL Server:新しい行を待ちます

背景:テーブルに基づいてメッセージキューを構築したいと思います。私はメッセージを構造化し強く型付けしたいのでService Brokerを使いたくありません。通常のテーブルを使用すると、他のテーブルとの関係も持つことができます。

+0

* GASP *「待っている」テーブルでトリガーし、新しいテーブルが消えるのを待っているジョブ。 Service Brokerは本当にすばらしいです...ちょうど言っています。 – SQLMason

+0

ええ、Service Brokerは完璧ですが、キューとして素敵なテーブルを使用することはできません(厄介なXMLブロブを使用する必要があります)。 – usr

+0

キューにはprocを書くことができます。XMLに問い合わせることができます(あまりうまくいっていません) – SQLMason

答えて

3

通常の方法ではポーリングを使用しますが、直接的なイベントが本当に必要な場合は、SqlDependencyクラスを使用して、クエリの結果が変更されたときにイベントを取得できます。

+0

私はデキューしたすべてのメッセージの後に新しい依存関係を作成する必要があります。 – usr

+0

SqlDependencyはServiceBrokerを使用しています...私もそれについて言及するつもりでした。 – SQLMason

+0

SqlDependencyは、Service Brokerを使用して更新通知の受信を自動化するため、この回答を受け入れます。私は、 "select id from tab where id> @lastReceivedMessageID"というクエリの通知を登録します。 – usr

1

私たちのアプリケーションでは、System.Threading.Timerを使用してデータベーステーブルをポーリングします。新しいメッセージが利用可能になると、それは処理されています。処理が成功すると、DBからメッセージが削除されます。

2

あなたは投票するか、通知を受ける必要があります。

ポーリングでは、クライアントは、述部を使用して、またはcount(*)のために、定期的にテーブルをクエリする必要があります。これはおそらく大きな解決策ではありません。

テーブルにトリガーを入れてクライアントのリスナーにメッセージを送信するのは、安くて便利な通知システムです。

関連する問題