スケジュールおよび配信のプロセッサ

Reporting Services には、スケジュールおよび配信のプロセッサ コンポーネントが含まれています。このコンポーネントは、スケジュールされた操作をサポートしたり、配信拡張機能を制御したりします。配信拡張機能は、レポートを配信先である電子メールの受信トレイや共有フォルダにプッシュする場合に使用されます。

スケジュールおよび配信のプロセッサは、レポート サーバーが使用する内部コンポーネントであり、サブスクリプションの処理およびレポート配信、スナップショットの更新、キャッシュされたレポートの有効期限の設定を行います。サーバーの機能を構成したり、サブスクリプションまたは配信の問題をトラブルシューティングしたりする場合、スケジュールされている処理の段階と、他のサービスやテクノロジとの依存関係を理解するためにこのトピックの情報が参考になります。このトピックでは、イベント キューの管理に使用する構成設定についても説明します。

スケジュール処理および配信処理のしくみ

スケジュールおよび配信のプロセッサは、次の機能を提供します。

  • レポート サーバー データベース内のイベントおよび通知のキューを管理します。スケールアウト配置では、キューは配置しているすべてのレポート サーバーで共有されます。

  • レポート プロセッサを呼び出し、レポートの実行、サブスクリプションの処理、またはキャッシュされたレポートの消去を行います。スケジュール イベントの結果として生じるすべてのレポート処理は、バックグラウンド プロセスとして実行されます。

  • レポートを配信できるように、サブスクリプションで指定されている配信拡張機能を呼び出します。

スケジュール設定や配信操作のその他の機能は、スケジュールおよび配信のプロセッサと連動する他のコンポーネントやサービスによって処理されます。特に、スケジュールおよび配信のプロセッサはレポート サーバー サービスで実行され、SQL Server エージェントをタイマとして使用して定期的なイベントを生成します。ここでは、Reporting Services の配置におけるスケジュールされた操作の実行方法について、順を追って説明します。

  1. ユーザーがスケジュールを作成すると、スケジュールされた操作が定義されます。スケジュールで定義するのは、レポート配信のサブスクリプションのトリガ、スナップショットの更新、キャッシュの期限切れなどに使用する日付と時刻です。

  2. レポート サーバーがスケジュール情報をレポート サーバー データベースに保存します。

  3. レポート サーバーは、指定されたスケジュール情報を含む SQL Server エージェントで、対応するジョブを作成します。このジョブは、レポート サーバー データベースに対して開いている既存の接続を使用し、ストアド プロシージャを介して作成されます。

  4. SQL Server エージェントが、スケジュールで指定された日付と時刻にジョブを実行します。ジョブが実行されると、イベントが作成され、Reporting Services で管理するキューに追加されます。

  5. このイベントにより、レポートまたはサブスクリプションの処理が行われます。キューで検出された時点でイベントが処理され、それに従ってレポートが処理または配信されます。

    イベントの処理前に、スケジュールおよび配信のプロセッサは認証の手順を実行し、サブスクリプション所有者にレポート表示の権限があるかどうかを確認します。サブスクリプションの詳細については、「サブスクリプションの処理」を参照してください。

Reporting Services では、すべてのスケジュールされた操作のイベント キューを管理します。定期的にキューをポーリングし、新しいイベントがないかどうかを確認します。既定では、10 秒間隔でキューがスキャンされます。間隔を変更するには、RSReportServer.config ファイルで PollingInterval、IsNotificationService、および IsEventService の構成設定を変更します。詳細については、「RSReportServer 構成ファイル」を参照してください。

サーバーの依存関係

スケジュールおよび配信のプロセッサでは、レポート サーバー サービスと SQL Server エージェントが開始されている必要があります。ポリシー ベースの管理の [Reporting Services のセキュリティ構成] ファセットの ScheduleEventsAndReportDeliveryEnabled プロパティにより、スケジュールおよび配信処理機能を有効にする必要があります。スケジュールされた操作を実行するには、SQL Server エージェントおよびレポート サーバー サービスの両方が実行されている必要があります。

注意注意

[Reporting Services のセキュリティ構成] ファセットを使用して、一時的または永続的に、スケジュールされた操作を停止させることができます。カスタム配信拡張機能を作成して配置することはできますが、それだけではスケジュールおよび配信のプロセッサを拡張できません。イベントおよび通知の管理方法を変更することはできません。機能を無効にするには、「Reporting Services 機能を有効または無効にする方法」を参照してください。

SQL Server エージェントの停止の影響

スケジュールされたレポート処理では、既定で SQL Server エージェントを使用します。サービスを停止すると、FireEvent メソッドによりプログラムで追加しない限り、新しい処理要求はキューに追加されません。サービスを再開すると、レポート処理要求を作成するジョブが再開されます。SQL Server エージェントがオフラインの間、レポート サーバーは、過去に発生する可能性のあったレポート処理ジョブを再作成しません。SQL Server エージェントを 1 週間停止する場合、その週のすべてのスケジュールされた操作は失われます。

注意注意

SQL Server エージェントが Reporting Services に提供する機能を、FireEvent メソッドを使用するカスタム コードに置き換え、キューにスケジュール イベントを追加することができます。

レポート サーバー サービスの停止の影響

レポート サーバー サービスを停止しても、SQL Server エージェントは引き続きレポート処理要求をキューに追加します。SQL Server エージェントからの状態情報は、ジョブが成功したことを示します。ただし、レポート サーバー サービスが停止しているため、実際にはレポート処理は実行されません。レポート サーバー サービスを再起動するまで、要求はキューに蓄積され続けます。レポート サーバー サービスを再起動すると、キューにあるすべてのレポート処理要求が順番に処理されます。