Notification Services に関してよく寄せられる質問

Microsoft Notification Services に関してユーザーから共通してよく寄せられる質問を以下の一覧にまとめました。

質問と回答

Notification Services と SQL Server エージェントとの違いは何ですか?

SQL Server エージェントは、SQL Server 管理者にメッセージを送信するため、またはサーバーやデータベースの状態に基づいてあらかじめ定義されたタスクを実行するために、特別に作成されました。

一方、Notification Services は、ほぼすべてのソースからデータを収集し、そのイベントを多くのユーザーが定義したサブスクリプションと一致させ、ほぼすべてのプロトコルを使って、メッセージを受け取れるほぼすべてのデバイスに対し書式設定されたメッセージを送信します。

SQL Server エージェントをカスタマイズすることにより、トリガを使用して多数のユーザーにメッセージを送信することはできますが、SQL Server は、数千から数百万規模のユーザーに対応できる設計にはなっていません。Notification Services は、数百万規模のユーザーに対応することができ、1 日に数百万の通知を送信できます。

また、Notification Services は開発プラットフォームとして、アプリケーションを作成し、実行するのに必要となる時間を削減する機能を提供します。SQL Server エージェントは開発プラットフォームではないので、同様の機能は提供しません。

Notification Services の詳細については、「SQL Server Notification Services の紹介」を参照してください。

1 台のサーバーで複数の通知アプリケーションを実行できますか?

はい。Notification Services のインスタンスを複数配置して、各インスタンスが 1 つ以上のアプリケーションをホストできます。1 台のサーバーで複数のインスタンスを実行でき、1 台のサーバーで複数のバージョンの Notification Services を実行することもできます。

1 台のサーバーでどれだけの数のアプリケーションを実行するかを判断するには、サーバーに配置しようと考えている各アプリケーションの処理負荷を調べる必要があります。1 台のサーバーで実行するアプリケーションが多すぎると、パフォーマンスが低下します。

詳細については、「Notification Services システムの計画」を参照してください。

イベントから通知を作成するにはどの程度の時間がかかりますか?

まず、イベントがすべてのサブスクリプションのトリガになるわけではありません。サブスクリプションによっては、通知のスケジュールを指定するものもあります。この場合は、イベントが到着したときではなく、定義済みのスケジュールによって通知が送信されます。

イベント トリガの通知の場合は、イベントの発生から通知の配信までの待機時間はアプリケーションの設計によって大きく異なります。以下に通知の待機時間を決定する要因を示します。

  • イベントは、Notification Services に送信される必要があります。イベントが発生してから、イベント プロバイダがイベント バッチ内のそのイベントを送信するまでの時間差が、待機時間を決定する要因の 1 つになります。
  • ジェネレータの動作スケジュールは、ジェネレータの QuantumDuration プロパティの値によって決まります。クォンタム期間が 60 秒の場合、イベント バッチを使用して通知を作成するまでに 60 秒の遅延が生じる可能性があります。
  • ジェネレータは、通知を生成するためにイベントとサブスクリプションを一致させる必要があります。一致処理は、1 つ以上の Transact-SQL クエリによって実行されます。これらのクエリのパフォーマンスが、通知の生成に必要な待機時間を決定します。一般的には、一度に評価するイベントとサブスクリプションが多くなるほど、このプロセスに時間がかかるようになります。最適化されたルールと適切に選択されたインデックスにより、一致処理の待機時間を削減できます。
  • ディストリビュータの動作スケジュールは、ディストリビュータの QuantumDuration プロパティの値によって決まります。ジェネレータの場合と同様に、クォンタム期間が 60 秒の場合、ディストリビュータが通知バッチを処理するまでに 60 秒の遅延が生じる可能性があります。
  • ディストリビュータは、配信用に通知の書式設定を行い、それらをパッケージ化する必要があります。コンテンツ フォーマッタ オブジェクトが、書式設定を実行します。単純な書式設定よりも複雑な書式設定を実行する方が時間がかかり、書式設定された通知を配信サービスに送信するのも若干時間がかかります。たとえば、通知を HTTP サーバーに送信するのに最大 30 秒かかる可能性があります。

ディストリビュータが SMTP (Simple Mail Transfer Protocol) サーバーなどの配信サービスに通知を送信すると、それ以後 Notification Services では通知の送信の待機時間を管理できなくなります。

Notification Services アプリケーションを開発するために Microsoft Visual Studio 2005 をインストールする必要はありますか?

いいえ、Microsoft Visual Studio は必要ありません。ただし、Microsoft Visual Studio があると開発が容易になります。

標準イベント プロバイダやコンテンツ フォーマッタを使用するアプリケーションを開発する場合は、XML アプリケーション定義ファイル (ADF) を作成し、その後 XML インスタンス構成ファイル (ICF) を作成してアプリケーションをホストするインスタンスを定義することによって、アプリケーションをビルドできます。任意のテキスト エディタまたは XML エディタを使って、これらの XML ファイルを作成できます。

Notification Services 管理オブジェクト (NMO) を使用してアプリケーションをビルドする場合や、サブスクリプション管理インターフェイス、カスタム イベント プロバイダ、コンテンツ フォーマッタをビルドする場合は、Visual Studio 開発環境を使用してこれらのオブジェクトを作成できます。ただし、Visual Studio を使用する必要はありません。任意のテキスト エディタを使用してコードを記述できます。ただし、Microsoft .NET Framework SDK をインストールしてコードをコンパイルする必要があります。

ホストされるイベント プロバイダとホストされないイベント プロバイダを比較した場合、それぞれの利点は何ですか?

通常、ホストされるプロバイダを実装すると、開発作業が少なくなります。これは、Notification Services インスタンスが Notification Services API を読み込み、イベント プロバイダをアクティブにするために使用するスケジュールを管理するためです。また、ホストされるプロバイダは、他の Notification Services コンポーネントやサービスと同様に、有効または無効にすることもできます。

ホストされないイベント プロバイダは、顧客間関係管理アプリケーションや Web アプリケーションなど、イベントを送信できる既存のインフラストラクチャを持っている場合に、役に立ちます。ホストされないイベント プロバイダは、サブスクリプション クラスが参照できるように、アプリケーション定義ファイル (ADF) だけで一覧されます。

既に、アンマネージ コードで記述したサブスクリプション管理アプリケーションがあります。このアプリケーションから API を呼び出せますか?

Notification Services では、単純なサブスクリプションについては COM 相互運用をサポートしています。ただし、Microsoft.SqlServer.NotificationServices.Rules 名前空間のクラスでは COM 相互運用がサポートされていないため、COM 相互運用を使用して条件ベースのサブスクリプションを作成することはできません。

詳細については、「Notification Services との COM 相互運用」を参照してください。

参照

処理手順

一般的な Notification Services の問題の解決
Notification Services イベント ログ記録の構成
イベント メッセージの使用

ヘルプおよび情報

SQL Server 2005 の参考資料の入手