Notification Servicesは、SQL Server 2000のNotification Services 2.0データベースのコンポーネントをSQL Server 2005のネイティブサービスに統合する。Notification Services 2.0に精通しているならば、新バージョンも馴染みやすいだろう。
もし、Notification Servicesについて詳しい情報を望むならば、「Alert Users with Notification Services」を参照してほしい(特集末の関連リンクを参照)。プログラミングは変わったが、Notification Servicesの使い方やアーキテクチャは変わっていない。
Notification Servicesを使うために通知用の関数を用意する必要はない。Visual Studio 2005では、ADF(Application Definition File)を作り、アプリケーションを管理するためのサブスクリプションの設定をして、環境設定するだけだ。ベータ2では、Visual Studio 2005からNotification Servicesを管理するためのNSControlコマンドをバッチファイルとして実行できるようになっている。
ベータ2で提供されるクエリ通知機能は、Notification Serviceによる通知イベントとは別の、更新を知るためのもうひとつの方法だ。クエリ通知機能を使うと、指定されたクエリやインデックス化されたビューによって、テーブルの内容が変化したときに、その変更をクライアントアプリケーションに通知できる。
さらにクエリ通知機能は、テーブルやカタログデータが更新されたときに、それらのデータをリフレッシュし、最新の情報を常に見えるようにしたい場面で役立つことだろう。
リフレッシュ操作をする時のサーバラウンドトリップには高い代償が必要となる。
そこで、データベースの参照を毎日や1時間ごとに定期的に更新する代わりに、クエリ通知機能による通知トリガを利用し、DataAdapterオブジェクトのFillメソッドや、SqlDataReaderオブジェクトを使ってDataTableオブジェクトにデータを取り出す方法がとれる。
ADO.NET 2.0では、クライアントプログラムがSqlCommandオブジェクトを使ってデータベースに接続するときに、OnChangeイベントを定義したSqlDependecyオブジェクトをバインドしておくと、その接続がデータベースによって、「通知サブスクリプション」に格納される。すると、SqlCommand.CommandTextプロパティに設定されたクエリによってデータの変更が生じたときに、SQL Server 2005内部のキューに、その変更を通知するメッセージが置かれるようになる。このときSqlDependencyオブジェクトのOnChangeのイベントが発生し、データへの変更がクライアントアプリケーションに伝わるというわけだ。
変更通知を受けるほかの方法としては、NotificationRequestをポーリングして監視する方法もとれる。
.NET Framework 2.0のSystem.Transactions名前空間では、ADO.NET 2.0アプリケーションやSQL Server 2005に対して、「LightweightCommittableTransactions(LCT)」という分散トランザクションの新しいクラスを提供する。
LCTに参加する最初のサーバは、高速なローカルなトランザクションを作成する。そして他のサーバがLCTに参加すると、ローカルなトランザクションからCOM+分散トランザクションへと昇格するのだ。
そのため、LCTは複数のサーバをまたがらないトランザクションにおいて、性能を著しく押し上げることができる。ベータ2では、CLRとの統合化は進んでおらず、複数のアクティブな結果セット(MARS)や非同期のSqlCommandについては、現状のままだ。
.NET Framework 2.0とVisual Studio 2005ベータ1には、SQL Server 2005の新機能のサポートが加わっている。しかし非同期のSqlConnectionは削除され、SqlResultSetクラスとSqlCommand.ExecutePageReaderメソッドも絵に描いた餅となってしまった。将来の.NET Framework 2.0ベータでは、これらの機能は完全に見ることはなくなるだろう。
そしてT-SQLの機能拡張として予定されていた「配列パラメータ」と「新しい日付や時刻型(Date、Time、UTCDateTime)」も、今では見当たらない。大きな特長として期待されたデータダイアグラム機能が欠落したことは、WhidbeyとSQL Server 2005のニュースグループで、多数のユーザーを怒らせた。もしかしたら、データダイアグラムは、将来のリリースで現れるかもしれない。
このように幾つかの欠落があるものの、全体的に見れば、Tom Rizzo氏が述べている「落とした機能よりも、より多くの機能を加えた」という結論には、賛同できるだろう。
著者に関して:Roger Jennings氏は、XML Webサービスおよびデータベースのフリーの開発者兼、著者。Visual Studio Magazineの補助編集員およびFTP Onlineコラムニスト。OakLeafのXML Webサービスデモンストレーションサイトを管理している。彼の「Federal Regulations Webサービス」は、Microsoft's 2002 .NET Best Horizontal Solution Awardに輝いた。
日本語訳:大澤文孝
© Copyright 2001-2005 Fawcette Technical Publications