次の方法で共有


Stock サンプル

更新 : 2006 年 7 月 17 日

Stock サンプルは、イベント ドリブン サブスクリプションと定期的なサブスクリプションの両方を使用して株式市場データに基づいた通知を生成する、Microsoft SQL Server 2005 Notification Services アプリケーションです。サブスクライブされたユーザーは、株価が指定されたトリガ値を超えると通知を受け取ります。

また、このサンプルでは、Notification Services によって作成される Microsoft Windows サービスを使用せずに、カスタム アプリケーションで Notification Services エンジンをホストする方法について説明します。

シナリオ

投資家は株価についての通知をサブスクライブします。各サブスクリプションは、銘柄記号が指定され、イベント ドリブンであるかスケジュールされているかのどちらかです。

イベント ドリブン サブスクリプションでは、株式イベントが受信されると、Notification Services は次の条件のすべてが満たされている場合に通知を生成します。

  • イベントの銘柄記号がサブスクリプションの銘柄記号と一致する。
  • 新しい株価がサブスクリプションのトリガ値よりも高い。
  • 株式イベント記録に記録されているその株式の以前の高値がサブスクリプションのトリガ値よりも低い。これにより、サブスクライバが同じ株式について複数の通知を受け取ることはなくなります。

新しい株価が記録の株価よりも高い場合、または銘柄記号が記録に存在しない場合、Notification Services によって記録が更新されます。

イベント ドリブン サブスクリプションの通知は一度につき 1 つ配信されます。

定期的なサブスクリプションでは、Notification Services によって、株価記録のデータが定期的なサブスクリプションと一致しているかどうかを調べます。一致となるのは、サブスクリプションの銘柄記号が、記録の銘柄記号と一致する場合です。

各一致に対して Notification Services が通知を生成します。ディストリビュータは、1 つのサブスクライバに対する複数の通知を、サブスクライバの株式ポートフォリオのデータを提供する 1 つの通知に結合します。

言語

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

機能

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

イベント クラス

1 つのイベント クラスと 1 つのイベント記録。

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

2 つのサブスクリプション クラス (イベント ドリブン サブスクリプションと定期的なサブスクリプション 1 つずつ)。

通知クラス

2 つの通知クラス (イベント ドリブン通知と定期的な通知 1 つずつ)。定期的な通知はダイジェスト配信を使用します。

イベント プロバイダ

1 つのファイル システム監視イベント プロバイダと 1 つのホストされていないカスタムのイベント プロバイダ。

コンテンツ フォーマッタ

Notification Services XSLT コンテンツ フォーマッタ。各通知クラスは、コンテンツ フォーマッタに対してそれぞれ XSLT ファイルを指定します。

配信プロトコル

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

Notification Services エンジン

コンソール アプリケーションでホストされます。

前提条件

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

  • 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 のインストール」を参照してください)

ソリューションのビルド

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

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

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

    -- または --

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

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

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

    sn -k SampleKey.snk

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

ソリューションのビルドを行い、インスタンスの作成直後にインスタンスを起動できるようにします。

Visual Studio ソリューションをビルドします。

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

    1. [スタート] をクリックして [すべてのプログラム] をポイントし、[Microsoft .NET Framework SDK v2.0] をポイントして [SDK コマンド プロンプト] をクリックします。
    2. Stock サンプルのルート フォルダに移動します。次のコマンドを入力して既定の場所を指定します。
      cd C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\Stock
    3. 次を入力して、ソリューションをビルドします。
      [C#] 
      msbuild Stock.sln
      [Visual Basic] 
      msbuild Stock_VB.sln
  • または、Visual Studio 2005 を使用している場合は、次の手順を行います。

    1. 選択したソリューション ファイル (Stock.sln または Stock_VB.sln) を開きます。
    2. ソリューションをビルドします。

Notification Services のインスタンスの配置

Notification Services のインスタンスを配置するには、次を手順を行う必要があります。

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

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

手順 1: Notification Services のインスタンスの作成

  1. SQL Server Management Studio を起動して、SQL Server のインスタンスに接続します。

  2. オブジェクト エクスプローラで Notification Services フォルダを右クリックして、[新しい Notification Services インスタンス] をクリックします。

  3. [新しい Notification Services インスタンス] ダイアログ ボックスで [参照] をクリックして、Stock サンプルのルート フォルダで InstanceConfig.xml ファイルをクリックします。

  4. [パラメータ] ボックスで、次の 3 つのパラメータの値を入力します。

    • SampleDirectory は Stock サンプルのルート フォルダのパスです。既定の場所は、C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\Stock です。
    • NotificationServicesHost はローカル サーバー名です。
    • SQLServer は SQL Server インスタンスの名前です。
  5. [インスタンスの作成後にインスタンスを有効にする] チェック ボックスをオンにします。

  6. [OK] をクリックします。

  7. Notification Services がインスタンスの作成を完了したら、[閉じる] をクリックします。

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

  1. SQL Server Management Studio で Notification Services ノードを開いて [StockInstance] を右クリックし、[タスク] をポイントして [登録] をクリックします。

    オプションは選択しません。エンジンはカスタム アプリケーションによってホストされるため、Windows サービスは作成しないでください。

  2. [OK] をクリックします。

  3. Notification Services がインスタンスの登録を完了したら、[閉じる] をクリックします。

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

手順 3: SQL Server、Windows、およびフォルダ権限の許可

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

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

    • Windows 認証を使用するには、[Windows 認証] をクリックし、インスタンスの登録時に指定したものと同じ Windows アカウントを入力します。
    • SQL Server 認証を使用する必要がある場合は、[SQL Server 認証] をクリックし、インスタンスを登録するときに指定したものと同じ SQL Server ログインとパスワードを入力します。
  3. このサンプルの実行に使用されるログインで既に SQL Server へアクセスできる場合、そのログインを右クリックして [プロパティ] を選択します。

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

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

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

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

  8. Events フォルダのセキュリティを構成します。

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

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

サンプルの実行

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

  • インスタンスの開始
  • サブスクライバおよびサブスクリプションの追加
  • イベントの送信

これらのタスクを実行すると、Notification Services によって通知が生成されます。これらのタスクを行う方法と、結果の通知を表示する方法は、次の手順のとおりです。

手順 1: ホストされたエンジンの開始

  1. ホストされるエンジンを実行するアカウントが SQLServer2005NotificationServicesUser$ComputerName Windows グループのメンバ (Notification Services バイナリの読み取りおよび実行の権限があります) になっているか、このアカウントに C:\Program Files\Microsoft SQL Server\90\Notification Services フォルダのファイルの読み取りおよび実行の権限があることを確認します。

  2. Windows エクスプローラを使用して、Stock サンプルの HostableExecutionEngine\language\HostableExecutionEngine\bin\Debug フォルダへ移動します。

  3. HostableExecutionEngine.exe をダブルクリックして、Notification Services エンジンをホストするコンソール アプリケーションを実行します。

    重要   Enter キーは押さないでください。Notification Services アプリケーションが通知を生成するには、エンジンが実行されている必要があります。

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

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

    この実行ファイルは、Stock サンプルの AddSubscribers\language\AddSubscribers\bin\Debug サブフォルダにあります。

    サブスクライバが追加されたら、Enter キーを押してコンソール アプリケーションを終了します。

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

    この実行ファイルは、Stock サンプルの AddSubscriptions\language\AddSubscriptions\bin\Debug サブフォルダにあります。

    サブスクリプションが追加されたら、Enter キーを押してコンソール アプリケーションを終了します。

  3. NonHostedEventProvider.exe を実行します。

    この実行ファイルは、Stock サンプルの NonHostedEventProvider\language\NonHostedEventProvider\bin\Debug サブフォルダにあります。

    以上の手順で、アプリケーションの外部で実行されるホストされないイベント プロバイダの使用により、イベントがアプリケーションに追加されます。次の手順では、ホストされるファイル システム監視イベント プロバイダにイベントを送信する方法を示します。

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

手順 3: イベント ファイルのドロップによるイベントの送信

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

    ms160739.note(ja-jp,SQL.90).gifメモ :
    ホストされないイベント プロバイダを使用して以前にイベントを送信したため、この手順は省略可能です。追加のイベントを送信して追加の通知を生成しない場合は、次の手順に進み、通知を表示します。

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

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

手順 4: 通知の表示

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

  2. Windows エクスプローラを使用して、Stock サンプルの Notifications フォルダへ移動します。FileNotifications.txt という名前のファイルを探します。このファイルには、このアプリケーションによって送信されたすべての通知が含まれています。

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

ms160739.note(ja-jp,SQL.90).gifメモ :
サンプルの再ビルドや変更を行わずに別の通知を生成する場合は、次のクエリを実行します。 USE [StockInstanceStock] DELETE FROM [StockInstanceStock].[dbo].[StockEventsChron]

エンジンの停止

イベントの送信および生成された通知の表示が完了したら、Notification Services エンジンを停止します。

エンジンを停止するには

  • HostableExecutionEngine コンソール ウィンドウで Enter キーを押してエンジンを停止します。

サンプルの削除

次の手順に従って、Stock サンプルを削除します。

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

  1. オブジェクト エクスプローラで [Notification Services] を展開します。

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

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

参照

その他の技術情報

Notification Services エンジンのホスト
SQL Server Notification Services サンプル
Notification Services のセキュリティの設定

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 7 月 17 日

追加内容 :
  • 「サンプルの実行」の手順 3 および手順 4 で、ホストされないイベント プロバイダを使用してイベント送信するオプション、およびファイル システム監視イベント プロバイダを使用するオプションについての説明を追加しました。
  • NSSubscriberAdmin データベース ロールの使用に関する注意事項を追加しました。

2006 年 4 月 14 日

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

2005 年 12 月 5 日

変更内容 :
  • キー ファイルの名前や場所など、キー ファイルを生成する手順を変更しました。
  • どのアカウントに権限が必要かを明確化するために、権限のセクションを更新しました。