次の方法で共有


Inventory Tracker サンプル

更新 : 2006 年 7 月 17 日

Inventory Tracking サンプルでは、サブスクライバがそのサブスクリプションに対して自身のクエリ句を定義できるようにするための、条件アクションの使用方法について示します。

シナリオ

在庫レベルが変化したときに、自社の従業員に通知が行われるようにする必要があります。少在庫、多在庫、または在庫の大きな変化など、検索するデータは個人によって異なるため、各従業員がサブスクリプションに対する独自の条件を作成できるようにします。

このサンプルでは、サブスクライバである Stephanie と David がそれぞれサブスクリプションを作成します。Stephanie のサブスクリプションでは、製品「Road-250 Black, 48」の最終組立品在庫が 35 ユニット以下になった場合に通知を受けるように指定します。David のサブスクリプションでは、製品「HL Crankarm」の部分組立品在庫が 250 ユニット以下になった場合に通知を受けるように指定します。

AdventureWorks の Production.Inventory テーブルの更新トリガによって、イベントがシステムに追加されます。在庫データが更新されるたびに、トリガによって Inventory Tracker アプリケーションにイベントが送信されます。イベントが受信されるジェネレータ クォンタムの最後に、イベント データとサブスクリプション データを照合して通知を生成するルールが Inventory Tracker アプリケーションによって起動されます。

通知は電子メールを使用してサブスクライバに送信されます。

言語

XML、XSLT、Transact-SQL、Microsoft Visual C#、または Microsoft Visual Basic。

機能

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

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

イベント クラス

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

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

イベント ドリブンであり、条件アクションを使用して柔軟なサブスクリプション ロジックをサポートするサブスクリプション ルール。記録なし。

通知クラス

ダイジェスト配信。

イベント プロバイダ

AdventureWorks データベースで更新トリガとして実装される、ホストされていないイベント プロバイダ。

コンテンツ フォーマッタ

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

配信プロトコル

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

Notification Services エンジン

インスタンスの登録時に作成される Microsoft Windows サービス。

前提条件

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

  • Microsoft SQL Server 2005 (次のコンポーネントを含む)
  • .NET Framework SDK 2.0 または Microsoft Visual Studio 2005。.NET Framework SDK は無償で入手できます。詳細については、「.NET Framework SDK のインストール」を参照してください。
  • インターネット インフォメーション サービス (IIS) のコンポーネントである簡易メール転送プロトコル (SMTP) サービス。Microsoft Windows Server 2003 では、IIS の既定のインストールでは SMTP はインストールされません。SMTP Service のインストールおよび使用方法の詳細については、IIS のマニュアルを参照してください。
    ms161543.note(ja-jp,SQL.90).gifメモ :
    このサンプルを実行する前に、SMTP サービスが停止されていることを確認します。SMTP サービスを停止すると、SMTP サービスによって存在しないサブスクライバへメッセージが送信される代わりに、サーバー上にメッセージが保持されます。

サンプルのビルド

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

  • ルールを評価するための SQL Server ログインの作成
  • Notification Services のインスタンスの作成
  • Notification Services のインスタンスの登録
  • Windows サービスへのデータベース権限の許可
  • トリガの作成およびルール評価アカウントへのデータベース権限の許可

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

手順 1: ルールを評価するための SQL Server ログイン アカウントの作成

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

    条件アクションを含むルールがアプリケーションにある場合は、条件を評価するためにログインが必要です。この個別のログインを使用することにより、サブスクライバがルールを作成できるデータを制限して、重要なデータを保護することができます。

    Notification Services のインスタンスを作成する前に、このログインがサーバーに存在し、データベースには存在しないようにしておく必要があります。このサンプルでは SQL Server 認証ログイン NSRulesEvaluator を使用します。独自のアプリケーションでは、SQL Server 認証または Windows 認証のいずれも使用できます。

    ms161543.note(ja-jp,SQL.90).gifメモ :
    可能な場合は、Windows 認証を使用します。
  2. オブジェクト エクスプローラで、[セキュリティ] ノードを展開します。

  3. [ログイン] を右クリックして [新しいログイン] をクリックします。

  4. [SQL Server 認証] をクリックします。

    このアカウントは、サーバーへの接続では使用できません。アカウントは、条件を評価するため、データベース エンジンのインスタンス内で Notification Services ジェネレータによって使用されます。

  5. [ログイン名] ボックスに「NSRulesEvaluator」と入力します。

    NSRulesEvaluator ログインのパスワードを入力します。

  6. [データベース] ボックスで [AdventureWorks] をクリックします。

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

    ログインが既定のデータベースへアクセスできないこと示すダイアログ ボックスが表示された場合は、[OK] をクリックします。このサンプルでは、後でデータベース権限の許可を行います。

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

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

  2. [新しい Notification Services インスタンス] ダイアログ ボックスで [参照] をクリックし、InventoryTracker フォルダに移動して InstanceConfig.xml ファイルをクリックします。

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

    • SampleDirectory: Inventory Tracker サンプルのルート フォルダのパスです。既定の場所は、C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\ です。
    • SQLServer: データベース エンジン インスタンスの名前です。
    • NotificationServicesHost: Notification Services を実行しているサーバーの名前です。サンプルでは、これはローカル コンピュータの名前になります。
  4. [インスタンスの作成後にインスタンスを有効にする] チェック ボックスをオンにします。

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

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

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

  1. オブジェクト エクスプローラで、Notification Services ノードを展開して [InventoryTrackerInstance] を右クリックし、[タスク] をポイントして [登録] をクリックします。

  2. [登録] ダイアログ ボックスで、[Windows サービスを作成する] チェック ボックスをオンにします。Windows サービスによって、このコンピュータで Notification Services のインスタンスが実行されます。

  3. [サービス ログオン] の下で、Windows ログオン アカウントおよびパスワードを入力します。これは、サービスを実行する Windows アカウントです。Windows 認証を使用して SQL Server へアクセスしている場合、Windows サービスはこのアカウントも使用して SQL Server に接続します。

  4. SQL Server 認証を使用して SQL Server に接続するには、[認証] の下の [SQL Server 認証] をクリックしてから SQL Server のログイン名とパスワードを入力します。

    Windows 認証を使用することを推奨します。

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

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

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

手順 4: Windows サービスへのデータベース権限の許可

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

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

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

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

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

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

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

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

手順 5: データベース トリガの構成とデータベース権限の許可

  1. SQL Server Management Studio で、[ファイル] メニューの [開く] をポイントし、[ファイル] をクリックします。

  2. [ファイルを開く] ダイアログ ボックスで SetupInventoryTrackerSample.sql を開きます。

    このファイルの既定の場所は、C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts です。

  3. [データベース エンジンへの接続] ダイアログ ボックスが表示されたら、接続情報を入力して [接続] をクリックします。

  4. F5 キーを押して、Transact-SQL ステートメントを実行します。

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

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

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

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

    -- または --

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

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

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

    sn -k SampleKey.snk

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

サンプルの実行

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

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

これらのタスクを行う方法と、結果の通知を表示する方法は、次の手順のとおりです。

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

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

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

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

  1. Visual Studio ソリューション InventoryTracker または InventoryTracker_VB をビルドします。

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

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

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

    1. 選択したソリューション ファイル (InventoryTracker.sln または InventoryTracker_VB.sln) を開きます。
    2. F6 キーを押して、ソリューションをビルドします。
  2. AddSubscribers.exe を実行します。

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

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

    C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\AddSubscriptions\language\AddSubscriptions\bin\Debug

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

手順 3: イベントのトリガ

  1. SQL Server Management Studio で、[ファイル] メニューの [開く] をポイントし、[ファイル] をクリックします。

  2. [ファイルを開く] ダイアログ ボックスで UpdateProductInventory.sql を開きます。

    このファイルの既定の場所は、C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts です。

    このスクリプトは、AdventureWorks データベースに更新トリガを追加し、NSRulesEvaluator ログインにデータベース権限を許可します。

  3. [データベース エンジンへの接続] ダイアログが表示されたら、接続情報を入力して [接続] をクリックします。

手順 4: 通知の表示

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

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

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

手順 5: インベントリのリセット

  1. SQL Server Management Studio で、[ファイル] メニューの [開く] をポイントし、[ファイル] をクリックします。

  2. [ファイルを開く] ダイアログ ボックスで ResetProductInventory.sql を開きます。

    このファイルの既定の場所は、C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts です。

    このスクリプトは、AdventureWorks データベースを以前の状態に戻します。これにより、サンプルを再度実行できるようになります。

  3. [データベース エンジンへの接続] ダイアログが表示されたら、接続情報を入力して [接続] をクリックします。

サンプルの削除

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

Inventory Tracker サンプルを削除するには

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

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

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

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

参照

その他の技術情報

SQL Server Notification Services サンプル

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 4 月 14 日

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

2005 年 12 月 5 日

変更内容 :
  • キー ファイルの名前や場所など、キー ファイルを生成する手順を変更しました。
  • ルール エバリュエータ アカウントのセキュリティに関するベスト プラクティスの情報を追加しました。