SQL Server Reporting Services (SSRS) で作成したレポートの中で大量のデータにアクセスする必要がある場合、様々なタイムアウトによりレポート表示が失敗する場合があります。
今回は、SQL Server Reporting Services (SSRS) に関連する各種タイムアウト設定に関する内容を、自分の整理も兼ねて、まとめてみようと思います。
[対象]
SQL Server 2019 Reporting Services (SSRS)
Microsoft Report Builder v15
SQL Server Reporting Services (SSRS) 各種タイムアウト設定
データソースからデータ取得時(データセット作成時)のクエリ タイムアウト設定
レポート サーバー上に配置され、複数のレポートで共有することが可能な「共有データセット」、各レポートで設定された「埋め込みデータセット」のプロパティより、データソースからデータ取得時のクエリ タイムアウト時間 (秒) を設定することができます。
- 「共有データセット」の場合
Web ポータル URL (例: http://<レポート サーバー>:<ポート番号>/reports) にアクセスし、データセットのプロパティからデータソースからデータ取得時のクエリ タイムアウト時間 (秒) を設定。
- 「埋め込みデータセット」の場合
Microsoft Report Builder より該当レポートを開き、「データセットのプロパティ」からデータソースからデータ取得時のクエリ タイムアウト時間 (秒) を設定。
レポート実行タイムアウト設定
Web ポータル URL (例: http://<レポート サーバー>:<ポート番号>/reports) にアクセスし、レポート サーバーがレポート処理を実施する最大時間 (秒) (レポート実行タイムアウト) を設定することができます。
SQL Server Reporting Services (SSRS) の httpRuntime タイムアウト値
SQL Server Reporting Services (SSRS) Web コンフィグ (web.config) 内の httpRuntime executionTimeout より、実行タイムアウト値を設定することができます。
[補足]
- 大量のレポート処理を実行する場合、httpRuntime executionTimeout 設定値を増やすことを検討
- Report Viewer コントロールからレポートを参照している場合は、Report Viewer コントロールを利用している Web アプリケーションの Web コンフィグ (web.config) より、httpRuntime executionTimeout の設定値を変更
# SSRS Webコンフィグ配置パス (例)
C:\Program Files\Microsoft SQL Server Reporting Services\<インスタンス名>\ReportServer\web.config
# web.config 設定 (例)
<httpRuntime executionTimeout="9000" requestValidationMode="2.0" />
SQL Server Reporting Services (SSRS) の アイドル セッション タイムアウト値
SQL Server Reporting Services (SSRS) Web コンフィグ (web.config) 内の sessionState timeout より、アイドル状態のセッションがタイムアウトするまでの時間 (秒) を設定することができます。
# SSRS Webコンフィグ配置パス (例)
C:\Program Files\Microsoft SQL Server Reporting Services\<インスタンス名>\ReportServer\web.config
# web.config 設定 (例)
<sessionState mode="Off" />
SQL Server Reporting Services (SSRS) の データベース実行タイムアウト値
レポート サーバー データベースへの接続がタイムアウトするまでの時間 (秒) を設定することができます。
# SSRS rsreportserver.config 配置パス (例)
C:\Program Files\Microsoft SQL Server Reporting Services\<インスタンス名>\ReportServer\rsreportserver.config
# rsreportserver.config 設定 (例)
<Add Key="DatabaseQueryTimeout" Value="300"/>
SQL Server Reporting Services (SSRS) ユーザーセッションのタイムアウト値
ユーザー セッションがアクティブ状態になっている時間 (秒) (SessionTimeout) 、全てのレポート処理タイムアウトの既定値 (秒) (SystemReportTimeout) を設定することができます。
# 設定変更手順
1) SQL Server Management Studio - SQL Server Reporting Services から レポート サーバーに接続します。
2) 該当レポート サーバー - 右クリック - プロパティ を選択します。
3) ページの選択 - 詳細設定 より、「SessionTimeout」、「SystemReportTimeout」などのプロパティ値を変更し、「OK」ボタンを選択します。
- SessionTimeout : 600 秒 (既定値)
- SystemReportTimeout : 1800 秒 (既定値)
まとめ
今回は、SQL Server Reporting Services (SSRS) に関連する各種タイムアウト設定に関する内容をまとめてみました。
最近は、SQL Server Reporting Services (SSRS) の後継サービス/製品 である Power BI Services や Power BI Report Server などを使用することが多くなっていると思います。
SQL Server Reporting Services (SSRS) は SQL Server 2019 Standard Edition などの下位エディションでも使用することが可能となっているため、要件とコストを考慮して使用することを検討されると良いかと思います。