2008年3月21日金曜日

[.NET]SQLServer2005のクエリ通知機能

SQLServer2008 CTP版がすでに世の中に出ていますが、そのあたりは気にせず、SQLServer2005のクエリ通知機能について調査してみました。
サンプルソースを作って。。。と思いましたが、環境を作ったりする時間が取れそうにないので、とりあえずメモだけ。

クエリ通知機能とは特定のテーブルテーブルに更新が合った場合にSQLServer側からイベントを発行してくれるような機能のようです。
ソケット通信に着替えると、サーバ(SQLServer)がUDPで更新情報を流しでクライアント(ADO.NET)がそれを受けてイベント発火。といったとことでしょうか。

詳細はここが参考になります。
で、クライアント側の処理を簡単に手順をまとめると、
  1. DBをオープンする
  2. 参照用のSqlCommandを生成する。SQL→「WAITFOR ( RECEIVE * FROM ContactChangeMessages);」
  3. SqlCommandにそれらしくCommandTimeoutを設定する
  4. SqlCommand.ExecuteReaderする
  5. SqlDataReader.Read()する。結果がtrueであれば結果有

※データベースに対して通知機能を有効にする必要があります。

おおざっぱにはこんな感じです。

アプリケーションサーバが複数台の構成になっていて、データを更新するたびに何かしら通知するような仕組みが必要な(つくりが悪い説もありますが。。。)場合、比較的楽に実装できそうですね。

0 件のコメント: