レポートとスナップショットのサイズ制限

Reporting Services の配置を管理する管理者は、このトピックの情報を参照することにより、レポート サーバーへのパブリッシュ時、レンダリング時 (実行時)、ファイル システムへの保存時のレポート サイズ制限を理解できます。このトピックでは、レポート サーバー データベースのサイズを測定する方法の具体的な指針とサーバーのパフォーマンスのスナップショット サイズの効果についても説明します。

パブリッシュされたレポートとモデルの最大サイズ

レポート サーバー上のレポートとモデルのサイズは、レポート サーバーにパブリッシュされたレポート定義ファイル (.rdl) とレポート モデル ファイル (.smdl) のサイズに基づいています。レポート サーバーでは、パブリッシュするレポートまたはモデルのサイズは制限されません。ただし、MicrosoftASP.NET により、サーバーに送信できるアイテムの最大サイズが制限されています。既定では、この制限は 4 MB です。この制限を超えるサイズのファイルをレポート サーバーにアップロードまたはパブリッシュすると、HTTP 例外が返されます。この場合、Machine.config ファイルの maxRequestLength 要素の値を大きくすることで、既定値を変更することができます。

レポート モデルは非常に大きくなる場合がありますが、レポート定義が 4 MB を超えることはほとんどありません。一般的なレポート サイズは、キロバイト (KB) 単位です。ただし、埋め込み画像が含まれている場合は、これらの画像のエンコードによってレポート定義のサイズが大きくなり、既定の 4 MB を超える可能性があります。

ASP.NET では、サーバーに対するサービス拒否攻撃 (DoS) の脅威を低減するために、送信ファイルに最大サイズを設けています。最大サイズの制限の値を大きくした場合、この制限による保護がある程度弱められます。値を大きくすることで得られるメリットが、それに伴うセキュリティ リスクの増大よりも重要であると確信できる場合のみ、値を大きくしてください。

メモリ内のレポート サイズ

レポート実行時のレポート サイズは、レポートに返されるデータ量に出力ストリームのサイズを加えた値と同じです。Reporting Services では、レンダリング済みのレポート サイズに対する最大値が設定されません。サイズの上限は、システム メモリによって決まります。既定では、構成された使用可能なメモリがすべてレポートのレンダリング時に使用されますが、メモリのしきい値およびメモリ管理ポリシーを設定するための構成設定を指定できます。詳細については、「レポート サーバー アプリケーションで利用可能なメモリの構成」を参照してください。

いずれのレポートでも、返されるデータ量とレポートの表示形式に応じて、サイズが大幅に変化する可能性があります。パラメータ化されたレポートは、パラメータ値がクエリの結果にどのように影響するかによって、サイズが増減する可能性があります。選択したレポートの出力形式は、レポート サイズに次のように影響します。

  • HTML では、レポートが 1 ページずつ処理されます。レポートの処理単位が小さいので、個々のチャンクを処理するために必要なメモリの使用量は少なくなります。

  • PDF、Excel、TIFF、XML、および CSV では、ユーザーに対してレポートを表示する前に、メモリ内でレポート全体が処理されます。

表示されているレポートのサイズを測定する場合は、レポート実行ログを参照できます。詳細については、「レポート サーバー実行ログ」を参照してください。

ディスク上のレンダリング済みレポートのサイズを計算する場合は、レポートをファイル システムにエクスポートして保存できます (保存されるファイルには、データとレポート形式情報が含まれます)。

レポート サイズのハード制限は、Excel 形式で表示する場合にのみ存在します。ワークシートの大きさが、65536 行および 256 列を超えることはできません。他の表示形式にはこれらの制限がないので、サーバーのリソース量によってのみサイズが制限されます。Excel ファイルの制限の詳細については、「Microsoft Excel へのエクスポート」を参照してください。

注意注意

レポートの処理とレンダリングは、メモリ内で行われます。レポートが大きい場合またはユーザーが多い場合は、なんらかのキャパシティ プランニングを行い、ユーザーにとって満足のいくレベルのパフォーマンスを実現できるようにレポート サーバーを配置してください。ツールとガイドラインの詳細については、MSDN の資料「Planning for Scalability and Performance with Reporting Services」および「Using Visual Studio 2005 to Perform Load Testing on a SQL Server 2005 Reporting Services Report Server」を参照してください。

スナップショット ストレージの測定

スナップショットのサイズは、レポートのデータ量に比例します。通常、スナップショットは、レポート サーバーに格納されている他の項目よりはるかに大きくなります。スナップショットの一般的なサイズの範囲は、数メガバイトから数十メガバイトです。非常に大きいレポートを使用している場合、さらにスナップショットが大きくなる可能性があります。スナップショットを使用する頻度およびレポート履歴の構成方法に応じて、レポート サーバー データベースに必要なディスク領域が短期間で急速に増える可能性があります。

既定では、reportserverreportservertempdb データベースは、自動拡張に設定されます。データベース サイズが自動的に大きくなりますが、自動的に小さくなることはありません。スナップショットを削除したため、reportserver データベースに余分な容量がある場合、手動でサイズを小さくして、ディスク領域を回復する必要があります。同様に、非常に大きな対話型のレポートを格納するために reportservertempdb のサイズが大きくなっていても、ディスク領域の割り当ては、サイズを小さくするまでその設定のままです。

レポート サーバー データベースのサイズを測定するには、次の Transact-SQL コマンドを実行します。定期的にデータベースの合計サイズを計算すると、時間の経過と共にレポート サーバー データベースの領域の割り当て方法に関する適切な推定値を算出できます。次のステートメントは、現在使用されている領域を測定します (このステートメントでは、既定のデータベース名が使用されていると仮定します)。

USE ReportServer
EXEC sp_spaceused

スナップショットのサイズとレポート サーバーのパフォーマンス

スナップショットのサイズは、レポートが処理されて表示される際、サーバーのパフォーマンスに影響します。サーバーのパフォーマンスは、表示操作で最も影響を受けます。このため、大きいスナップショットを使用している場合、ユーザーがレポートを要求する際に遅延が発生する可能性があります。ユーザー数によっては、スナップショットのサイズが 100 メガバイトを超えると、遅延が発生することがあります。

大きいスナップショットによるパフォーマンスの遅延を最小限に抑えるには、次の方法を使用できます。

  • レポート サーバーと SQL Server データベース エンジンを別々のコンピュータに配置します。

  • システム メモリを追加します。

  • 企業向けレポート サーバーの構成方法に関する推奨事項について、MSDN Web サイトの「Planning for Scalability and Performance with Reporting Services (Reporting Services でのスケーラビリティおよびパフォーマンスの計画)」を確認します。

レポート サーバー データベースに格納されているスナップショットの数量自体は、パフォーマンスに影響する要因にはなりません。サーバーのパフォーマンスに影響を与えないで、多くのスナップショットを格納できます。スナップショットは、無期限に保存できます。ただし、レポート履歴は構成が可能なので注意が必要です。レポート サーバー管理者がレポート履歴の制限値を低くした場合、保存したレポート履歴が失われることがあります。レポートを削除すると、すべてのレポート履歴が一緒に削除されます。レポートをアーカイブする別の方法の詳細については、「レポートの保存」を参照してください。