次の方法で共有


FlightNmo サンプル

更新 : 2006 年 7 月 17 日

FlightNmo サンプルでは、Notification Services 管理オブジェクト (NMO) を使用して Flight サンプル アプリケーションをビルドする方法について説明します。

シナリオ

旅行者は航空券価格通知をサブスクライブしています。各サブスクリプションでは、旅行者は、出発地と到着地、希望価格、および航空会社 (任意) を指定します。

FlightNmo アプリケーションを実行している企業は、XML データを監視フォルダにドロップすることによって航空券価格イベント データをアプリケーションに送信します。次に、Notification Services がこのデータを取得し、一致するサブスクリプションを持つサブスクライバに対する通知を生成します。

通知は以下の条件を満たすときに生成されます。

  • イベントのチケット価格が、サブスクリプションのチケット価格より安い。
  • イベントの出発空港が、サブスクリプションの出発空港と同じである。
  • イベントの到着空港が、サブスクリプションの到着空港と同じである。
  • イベントの航空会社が、サブスクリプションの航空会社 (指定されている場合) と同じである。

1 つのサブスクライバ宛てに複数の通知を同時に送信する場合、Notification Services はダイジェスト配信を使用して複数の通知を結合します。次に、Notification Services は XSLT コンテンツ フォーマッタを使用して通知をフォーマットし、指定された配信チャネル (電子メールまたはファイル) を使用して通知を配布します。

言語

XML、XSD、XSLT、および Microsoft Visual C# または Microsoft Visual Basic。

機能

FlightNmo サンプルでは、Notification Services の次の機能が使用されます。

アプリケーション エリア 機能

イベント クラス

基本イベント キュー (記録なし)

サブスクリプション クラス

イベント ドリブン サブスクリプション

通知クラス

ダイジェスト配信

イベント プロバイダ

ファイル システム監視イベント プロバイダ

コンテンツ フォーマッタ

XSLT コンテンツ フォーマッタ

配信プロトコル

ファイルおよび SMTP 配信プロトコル

インスタンスとアプリケーション開発

NMO

前提条件

このサンプルを実行する前に、次のソフトウェアがインストールされていることを確認してください。

  • SQL Server 2005 (次のコンポーネントを含む)
    • データベース エンジン。
    • Notification Services エンジンおよびクライアント コンポーネント。
    • SQL Server Management Studio。
    • Notification Services サンプル。これらのサンプルは SQL Server 2005 に含まれています。これらの最新バージョンは、SQL Server デベロッパー Web サイトからダウンロードできます。
    • .NET Framework SDK 2.0 または Microsoft Visual Studio 2005 (.NET Framework SDK は無償で入手できます。詳細については、「.NET Framework SDK のインストール」を参照してください)

次の Windows コンポーネントがインストールされていて操作可能な状態であることを確認します。

  • インターネット インフォメーション サービス (IIS) のコンポーネントである簡易メール転送プロトコル (SMTP) サービス。Microsoft Windows Server 2003 では、IIS の既定のインストールでは SMTP はインストールされません。SMTP Service のインストールおよび使用方法の詳細については、Windows のマニュアルを参照してください。

使用するデータベース エンジンのインスタンスが開始されていることも確認してください。

厳密な名前のキー ファイルの生成

強力な名前のキー ファイルをまだ作成していない場合は、次の指示に従ってキー ファイルを生成してください。

厳密な名前のキー ファイルを生成するには

  1. Microsoft Visual Studio 2005 コマンド プロンプトを開きます。[スタート] メニューの [すべてのプログラム] をポイントし、[Microsoft .NET Framework SDK 2.0] をポイントします。次に、[SDK コマンド プロンプト] をクリックします。

    -- または --

    Microsoft .NET Framework コマンド プロンプトを開きます。[スタート] メニューの [すべてのプログラム] をポイントし、[Microsoft .NET Framework SDK 2.0] をポイントします。次に、[SDK コマンド プロンプト] をクリックします。

  2. ディレクトリの移動コマンド (CD) を使用して、コマンド プロンプト ウィンドウの現在のディレクトリから、サンプルがインストールされているフォルダに移動します。

    ms160822.note(ja-jp,SQL.90).gif注 :
    サンプルが配置されているフォルダを調べるには、[スタート] ボタンをクリックし、[すべてのプログラム]、[Microsoft SQL Server]、[マニュアルとチュートリアル] の順にポイントして、[サンプル ディレクトリ] をクリックします。既定のインストール場所を使用している場合、サンプルは <system_drive>:\Program Files\Microsoft SQL Server\100\Samples にあります。
  3. コマンド プロンプトで、次のコマンドを実行してキー ファイルを生成します。

    sn -k SampleKey.snk

    ms160822.note(ja-jp,SQL.90).gif重要 :
    厳密な名前のキー ペアの詳細については、MSDN の .NET Development Center にある「Security Briefs: Strong Names and Security in the .NET Framework」を参照してください。

Notification Services インスタンスのビルド

このインスタンスをビルドするには、次の手順を行う必要があります。

  • Notification Services のインスタンスの作成と登録
  • SQL Server、データベース、およびフォルダ権限の許可

FlightNmo サンプルの各タスクを行う方法は、次の手順のとおりです。

手順 1: Visual Studio ソリューションのビルド

  1. まず始めに Visual Studio ソリューションをビルドします。

    Microsoft .NET Framework SDK を使用している場合は、次の手順を行います。

    1. [スタート] をクリックして [すべてのプログラム] をポイントし、[Microsoft .NET Framework SDK v2.0] をポイントして [SDK Command Prompt] をクリックします。
    2. FlightNmo サンプルのルート フォルダを探します。次のコマンドを入力して既定の場所を指定します。
      cd \Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo
    3. 次を入力して、ソリューションをビルドします。
      [C#] 
      msbuild FlightNmo.sln
      [Visual Basic] 
      msbuild FlightNmo_VB.sln

    または、Visual Studio 2005 を使用している場合は、次の手順を行います。

    1. 選択したソリューション ファイル (FlightNmo.sln または FlightNmo_VB.sln) を開きます。
    2. Visual Studio で [ビルド] メニューの [ソリューションのビルド] をクリックします。

手順 2: Notification Services インスタンスの作成と登録

  1. コマンド プロンプトで、CreateFlightNmoInstance Debug フォルダに移動します。

    cd CreateFlightNmoInstance\language\CreateFlightNmoInstance\bin\Debug

  2. 次に示すように CreateFlightNmoInstance.exe を実行して、インスタンスの作成、登録、および有効化を行います。SQL Server Authentication を使用する場合にのみ、SqlUserName 引数および SqlPassword 引数が必要になります。その他に必要な引数は次のとおりです。

    **CreateFlightNmoInstance SqlServer=databaseServerSampleDirectory=**directory

    **NotificationServicesHost=**NotificationServicesHost

    **ServiceUserName=NSServiceUserNameServicePassword=**NSServicePwd

    **SqlUserName=NSServiceSqlUserNameSqlPassword=**NSServiceSqlPwd

    このコマンドを実行するときは、上のプレースホルダの部分に次の値を使用します。

    • databaseServer は、インスタンス データベースおよびアプリケーション データベースを作成するデータベース エンジン インスタンスです。
    • directory はサンプル ディレクトリです。既定の場所は、C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo です。
    • NotificationServicesHost は Notification Services エンジン コンポーネントを実行するサーバーです。このサンプルでは、ローカル コンピュータを使用する必要があります。
    • NSServiceUserName は NS$FlightNmoInstance Windows サービスが実行されるアカウントです。
    • NSServicePwdNSServiceUserName アカウントのパスワードです。
    • SQL Server 認証を使用している場合にのみ、SQL Server 認証引数である NSServiceSqlUserNameNSServiceSqlPwd を使用します。これらの引数が指定されると、Windows サービスはそれらの引数を使用してデータベース エンジンに接続します。

    このコマンドが完了すると、2 つの新しいデータベースおよび 1 つの Windows サービスが作成されます。これらのデータベースの名前は FlightNmoInstanceNSMainFlightNmoInstanceFlightNmo になります。Windows サービスの名前は NS$FlightNmoInstance となります。

ms160822.note(ja-jp,SQL.90).gifメモ :
データベース所有者またはシステム管理者のアカウントを使用して Notification Services サンプルを配置する場合、そのアカウントに SQL Server の各権限を許可する必要はありません。これらの権限を許可するとエラーが発生する可能性があります (そのエラーは無視できます)。独自のアプリケーションを配置するときは、セキュリティを向上させるため、できる限り低い権限を持つアカウントを使用する必要があります。

手順 3: SQL Server およびデータベースの権限の許可

  1. SQL Server Management Studio を開き、このトピックで前述した SqlServer 引数で指定したデータベース エンジンのインスタンスに接続します。

  2. オブジェクト エクスプローラで、[セキュリティ] ノードを展開します。

  3. Windows サービスに新しいデータベース ログイン アカウントを作成する必要がある場合、[ログイン] を右クリックして [新しいログイン] をクリックし、ログイン アカウントを作成します。

    • Windows 認証を使用するには、[Windows 認証] をクリックし、このトピックで前述した ServiceUserName 引数で指定したものと同じ Windows アカウントを入力します。
    • SQL Server 認証を使用するには、[SQL Server 認証] をクリックし、このトピックで前述した SqlUserName 引数および SqlPassword 引数で指定した値を入力します。
  4. Windows サービスで使用されるログインで既に SQL Server へアクセスできる場合、そのログインを右クリックして [プロパティ] を選択します。

  5. [ログイン] ダイアログ ボックスの左側のペインで、[ユーザー マッピング] をクリックします。

  6. FlightNmoInstanceNSMain データベースへの権限を許可します。

    1. [このログインにマップされたユーザー] ボックスで [FlightNmoInstanceNSMain] をクリックします。
    2. [FlightNmoInstanceNSMain のデータベース ロール メンバシップ] ボックスで [NSRunService] をクリックします。
  7. FlightNmoInstanceFlightNmo データベースへの権限を許可します。

    1. [このログインにマップされたユーザー] ボックスで [FlightNmoInstanceFlightNmo] をクリックします。
    2. [FlightNmoInstanceFlightNmo のデータベース ロール メンバシップ] ボックスで [NSRunService] をクリックします。
  8. [OK] をクリックして、SQL Server 権限を適用します。

  9. Windows エクスプローラを使用して、Events フォルダのセキュリティを構成します。

    1. サンプルの Events フォルダを探します。
    2. Events フォルダを右クリックして [共有とセキュリティ] をクリックし、[セキュリティ] タブを選択します。
    3. [追加] をクリックして、Windows サービスで使用されるアカウントを追加します。
    4. [グループ名またはユーザー名] ボックスで、追加したアカウントをクリックします。
    5. [アクセス許可] ボックスで、[読み取り] 権限および [変更] 権限を選択します。
    6. [OK] をクリックして、変更を適用します。
  10. Notifications フォルダのセキュリティを構成します。

    1. サンプルの Notifications フォルダを探します。
    2. Notifications フォルダを右クリックして [共有とセキュリティ] をクリックし、[セキュリティ] タブを選択します。
    3. [追加] をクリックして、Windows サービスで使用されるアカウントを追加します。
    4. [グループ名またはユーザー名] ボックスで、追加したアカウントをクリックします。
    5. [アクセス許可] ボックスで、[書き込み] 権限を選択します。
    6. [OK] をクリックして、変更を適用します。

サンプルの実行

サンプルを実行するには、次の手順を行う必要があります。

  • インスタンスの開始
  • サブスクライバおよびサブスクリプションの追加
  • イベントを含む XML ファイルの送信
  • 結果の通知の表示

これらのタスクの実行方法は、次の手順のとおりです。

手順 1: インスタンスの開始

  1. オブジェクト エクスプローラで、Notification Services フォルダを開きます。

  2. [FlightNmoInstance] を右クリックして [開始] を選択します。

手順 2: サブスクライバおよびサブスクリプションの追加

  1. AddSubscribers.exe を実行します。

    このフォルダの既定の場所は、C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo\AddSubscribers\language\AddSubscribers\bin\Debug です。

  2. AddSubscriptions.exe を実行します。

    このフォルダの既定の場所は、C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\FlightNmo\AddSubscriptions\language\AddSubscriptions\bin\Debug です。

ms160822.note(ja-jp,SQL.90).gifメモ :
運用アプリケーションの場合、またはこのアプリケーションを制限付きのアカウントで実行している場合は、インスタンス データベースとアプリケーション データベースの NSSubscriberAdmin データベース ロールにこのアプリケーションの SQL Server ログインを追加してください。

手順 3: イベントの送信

  1. Windows エクスプローラで、FlightNmo サンプルのルート フォルダを探し、EventData.xml ファイルを Events サブフォルダにコピーします。

    ファイルをコピーすると、ファイル システム監視イベント プロバイダがデータをファイルから読み取り、そのデータをアプリケーションに送信して、ファイル名の拡張子を .done に変更します。

    データの読み取り時や送信時にエラーが発生した場合、イベント プロバイダはファイル名の拡張子を .err に変更します。エラーの詳細については、Windows イベント ビューアを参照してください。

手順 4: 通知の表示

  1. Notification Services が通知を作成するまで約 1 分間待機します。

  2. Windows エクスプローラを使用して、FlightNmo サンプルの Notifications フォルダを探します。FileNotifications.txt という名前のファイルを探します。このファイルには、ファイルベースの通知が含まれています。

  3. 電子メール メッセージがドロップされるフォルダへ移動します。これは通常 C:\Inetpub\mailroot にあるフォルダのいずれかにあります。SMTP サーバーの状態によって、通知は Pickup フォルダまたは Queue フォルダのいずれかにあります。SMTP サービスが実行されている場合、メッセージが Badmail フォルダに移動していることもあります。

サンプルの削除

FlightNmo サンプルを削除するには、次の手順を行います。

FlightNmo サンプルを削除するには

  1. SQL Server Management Studio のオブジェクト エクスプローラで、Notification Services フォルダを開きます。

  2. [FlightNmoInstance] を右クリックし、[停止] をクリックします。

  3. [FlightNmoInstance] を右クリックして [タスク] をポイントし、[登録解除] をクリックします。

  4. [FlightNmoInstance] を右クリックして [タスク] をポイントし、[削除] をクリックします。

参照

その他の技術情報

SQL Server Notification Services サンプル
Notification Services のセキュリティの設定

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 4 月 14 日

追加内容 :
  • データベース所有者権限を使用したサンプルの実行に関する注意事項を追加しました。

2005 年 12 月 5 日

変更内容 :
  • キー ファイルの名前や場所など、キー ファイルを生成する手順を変更しました。