Reporting Services のスケジュール

Reporting Services には、レポートの処理と配信の制御を支援する 共有スケジュールレポート固有スケジュール が用意されています。 これら 2 種類のスケジュールでは、定義、格納、管理の方法が異なります。 2 種類のスケジュールの内部の構成は同じです。 すべてのスケジュールでは、毎月、毎週、または毎日という定期実行の種類を指定します。 定期実行の種類では、イベントが発生する頻度を表すサイクル間隔と範囲を設定します。 定期的な実行パターンの種類とパターンの指定方法は、共有スケジュールとレポート固有スケジュールのいずれを作成する場合でも同じです。

  • 共有スケジュールは、個別のアイテムとして作成されます。 共有スケジュールは、作成後、サブスクリプションまたは他のスケジュール操作を定義するときに参照します。

  • レポート固有スケジュールは、サブスクリプションを定義するとき、またはレポート実行のプロパティを設定するときに作成されます。 スケジュール情報の入力は、サブスクリプションの定義やプロパティの設定の一部です。 レポート固有スケジュールを定義するには、そのスケジュールを使用するレポートまたはサブスクリプションを開きます。

共有スケジュールには、Reporting Services レポート サーバー上で実行され、パブリッシュされた任意の数のレポートおよびサブスクリプションのスケジュールや定期実行情報が含まれています。 同時に実行されるレポートおよびサブスクリプションが多数存在する場合は、それらのジョブに対する共有スケジュールを作成できます。 定期的なパターンや終了日を変更する必要性が生じた場合でも、それらを一度に変更できます。

共有スケジュールは管理が容易であり、スケジュールされている操作をより柔軟に管理できます。 たとえば、共有スケジュールを一時停止したり再開したりできます。 スケジュールされた操作が多すぎると、同時に実行される可能性があります。 同時に実行する場合は、異なる時刻に実行される複数の共有スケジュールを作成できます。 次に、レポート サーバー全体で処理負荷が均等になるまでスケジュール情報を調整します。

スケジュールに対して実行できる操作

ネイティブ モードの Reporting Services Web ポータルと SQL Server Management Studio、SharePoint モードの SharePoint サイト管理ページを使用して、スケジュールの作成と管理を行えます。 次のようにすることができます。

  • 標準のサブスクリプションまたはデータ ドリブン サブスクリプションでのレポート配信スケジュール

  • 一定間隔でレポート履歴に新しいスナップショットを追加するレポート履歴のスケジュール

  • レポート スナップショットのデータ更新時期のスケジュール

  • 共有データセットのデータ更新時期のスケジュール

  • キャッシュされたレポートまたは共有データセットを更新できるように、事前定義された時間に期限切れになるようにスケジュールを設定します。

多くのレポートまたはサブスクリプションで同じスケジュール情報を使用する場合は、共有スケジュールを作成できます。 共有スケジュールは個別に定義され、スケジュール情報を必要とするレポート、共有データセット、およびサブスクリプションから参照されます。

スケジュールを作成すると、レポートによってスケジュール情報がレポート サーバー データベース (SharePoint モードの場合はサーバー アプリケーション データベース) に保存されます。 レポート サーバーでは、スケジュールを開始するために使用する SQL Server エージェント ジョブも作成されます。 スケジュール処理は、スケジュールを含むレポート サーバーのローカル時間に基づいています。 時刻の形式は、 Microsoft Windows オペレーティング システムの標準に従います。

スケジュールを作成および管理する方法の詳細については、「スケジュールを作成、変更、および削除する」を参照してください。

Note

スケジュール操作は、SQL Server のすべてのエディションで使用できるわけではありません。 SQL Server の各エディションでサポートされる機能の一覧については、「SQL Server 2022 の各エディションとサポートされている機能」を参照してください。

共有スケジュールとレポート固有のスケジュールを比較する

どちらの種類のスケジュールも同じ出力を返します。

  • 共有スケジュール は、すぐに使用できる状態のスケジュール情報を含む、移植可能で多目的に使用できるアイテムです。 共有スケジュールは、システムレベルのアイテムなので、共有スケジュールを作成するにはシステムレベルの権限が必要です。 そのため、通常、レポート サーバー管理者またはコンテンツ管理者がレポート サーバー上で使用可能な共有スケジュールを作成します。 共有スケジュールは、Web ポータルまたは SharePoint サイトの設定を使用して、レポート サーバー上に格納して管理します。

    レポート、共有データセット、またはサブスクリプションのプロパティを使って定義する特定のスケジュールと比較すると、次のような特徴を持つ共有スケジュールは、管理と維持を容易に行えます。

    • 共有スケジュールは、中央の場所から管理できます。 中央の場所にあると、スケジュールされた操作が互いに接近して実行されている場合や、サーバー上の他のプロセスと競合している場合に、スケジュールのプロパティを比較し、頻度や繰り返しパターンを調整することが容易になります。

    • コンピューティング環境の変更にすばやく適応できます。 たとえば、データ ウェアハウスの更新後、午前 4:00 に一連のレポートを実行するとします。 データの更新操作のスケジュールが変更されたり、遅れたりした場合でも、1 つの共有スケジュールのスケジュール情報を更新するだけで、変更に対応できます。

    • 共有スケジュールのみを使用する場合、スケジュール設定された操作がいつ実行されるのかを正確に把握できます。 この知識により、パフォーマンスの問題が発生する前に、容易にサーバーの負荷を予測して対応することができます。 たとえば、コンピューターのバックアップを特定の時間に行うようにスケジュール設定した場合、共有スケジュールを別の時間に実行するように調整できます。

  • レポート固有スケジュール は、各レポート、サブスクリプション、またはレポート実行操作のコンテキスト内で定義され、キャッシュの有効期限やスナップショットの更新を決定します。 これらのスケジュールは、サブスクリプションを定義するとき、またはレポート実行のプロパティを設定するときに、インラインで作成されます。 共有スケジュールで必要な頻度または反復パターンが指定されていない場合に、レポート固有スケジュールを作成することができます。 レポートを実行しないようにするには、レポート固有スケジュールを手動で編集します。 各ユーザーはレポート固有のスケジュールを作成できます。

データ ソースの構成

レポートのデータ処理またはサブスクリプション処理のスケジュールを設定するには、保存した認証情報または非アテンド型のレポート処理アカウントが使用されるように、レポートのデータ ソースを設定しておく必要があります。 保存されている資格情報を使用する場合、保存できる資格情報は 1 組のみです。レポートを実行するすべてのユーザーに対してこの資格情報が使用されます。 資格情報には、Windows ユーザー アカウントまたはデータベース ユーザー アカウントを指定できます。

非アテンド型のレポート処理アカウントは、レポート サーバーに設定される特殊用途のアカウントです。 レポート サーバーは、スケジュール設定された操作が外部のファイルの取得または処理に必要な場合、アカウントを使用してリモート コンピューターに接続します。 このアカウントを構成すれば、レポートにデータを提供する外部データ ソースへの接続に使用できます。

保存されている資格情報または自動レポート処理アカウントを指定するには、レポートのデータ ソース プロパティを編集します。 共有データ ソースがレポートに使用されている場合は、共有データ ソースを編集します。

資格情報と処理アカウントの保存

スケジュールを使った作業を行う方法は、ロールの割り当ての一部であるタスクによって異なります。 既定のロールを使用する場合、スケジュールを作成および管理できるユーザーはコンテンツ マネージャーとシステム管理者です。 カスタム ロールの割り当てを使用する場合、そのロールの割り当てにはスケジュールが設定された操作をサポートするタスクが含まれている必要があります。

このタスクのために実行する操作 必要なタスク ネイティブ モードの定義済みロール SharePoint モードのグループ
共有スケジュールの作成、変更、または削除 共有スケジュールの管理 システム管理者 所有者
共有スケジュールの選択 共有スケジュールの表示 システム ユーザー メンバー
ユーザー定義サブスクリプションでのレポート固有スケジュールの作成、変更、または削除 個別のサブスクリプションを管理 閲覧者、レポート ビルダー、個人用レポート、コンテンツ マネージャー 閲覧者、メンバー
その他すべてのスケジュール設定された操作用のレポート固有スケジュールの作成、変更、または削除 レポート履歴の管理、すべてのサブスクリプションの管理、レポートの管理 コンテンツ マネージャー 所有者

ネイティブ モードの Reporting Services のセキュリティについては、「ロールの定義 - 定義済みロール」、「ネイティブ モードのレポート サーバーに対して付与されたアクセス許可」、「タスクとアクセス許可」をご覧ください。 SharePoint モードについては、「Reporting Services のロールおよびタスクと SharePoint のグループアクセス許可の比較」をご覧ください。

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

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

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

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

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

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

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

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

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

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

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

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

Reporting Services では、すべてのスケジュールされた操作のイベント キューを管理します。 定期的にキューをポーリングし、新しいイベントがないかどうかを確認します。 既定では、10 秒間隔でキューがスキャンされます。 間隔を変更するには、RSReportServer.config ファイルで PollingIntervalIsNotificationService、および IsEventService の構成設定を変更します。 また、SharePoint モードでは、これらの設定に RSreporserver.config を使用するため、値はすべての Reporting Services サービス アプリケーションに適用されます。 詳細については、「RsReportServer.config 構成ファイル」を参照してください。

サーバーの依存関係

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

Note

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

SQL Server エージェント を停止します。

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

Note

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

レポート サーバー サービスを停止します。

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