特集:後編 準備が整ったSQL Server 2005Visual Studio Magazine(3/3 ページ)

» 2004年11月16日 18時29分 公開
[Roger Jennings,FTPOnline]
前のページへ 1|2|3       

ネイティブ統合のNotification Services

 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をポーリングして監視する方法もとれる。

Framework 2.0と関わる新機能

 .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に輝いた。

日本語訳:大澤文孝

前のページへ 1|2|3       

© Copyright 2001-2005 Fawcette Technical Publications

注目のテーマ