まず、非常に大規模な/長時間実行されているレポートを実行するのは恐ろしい考えです。 Microsoftは、SSRSレポートの実行に30秒以上かかることはないという経験則を持っていることを認識しています。しかし、時には巨大な報告が、州法を遵守するような外部の力のために好ましい悪である場合もある。Sql Reporting Services 2005での巨大なレポートのPDFエクスポートの最適化
私の雇用場所には、Crystal ReportsからSSRSに移行したasp.net(2.0)アプリケーションがあります。大規模なユーザーベースと複雑なレポートUI要件のため、ユーザー入力のパラメータを受け入れ、夜間に実行するスケジュールを作成する一連の画面が用意されています。アプリケーションが複数のレポーティングフレームワークをサポートしているので、SSRSのスケジューリング/スナップショット機能は使用しません。システム内のすべてのレポートは、ユーザが入力したパラメータを取得し、レポートが作成された対応するレポートソリューションでレポートを生成する、スケジュールされたコンソールアプリケーションによって生成されます。 SSRSレポートの場合、コンソールアプリケーションはSSRSレポートを生成し、SSRS WebサービスAPIを介してPDFとしてエクスポートします。
これまでのところ、SSRSはCrystalよりも扱いがずっと簡単でしたが、最近Crystal ReportsからSSRSに変換された25,000ページのレポートがありました。 SSRSサーバーは64bit 2003サーバーで、SSRS 2005を実行する32ギガビットのRAMを搭載しています。小さなレポートはすべて機能しますが、このような大きなレポートには問題があります。残念ながら、WebサービスAPIを介して上記の報告書を生成することはできません。次のエラーは、生成/エクスポートに約30-35分発生します。
例外メッセージ:基になる接続がクローズされました。受信時に予期しないエラーが発生しました。奇妙なことは、レポートがレポートサーバー上で直接実行されている場合、このレポートは/レンダリング/エクスポートを実行することである
data = rs.Render(this.ReportPath, this.ExportFormat, null, deviceInfo,
selectedParameters, null, null, out encoding, out mimeType, out usedParameters,
out warnings, out streamIds);
:前
Webサービスの呼び出しは、私はあなたのすべてを見ていると確信しているものですレポートマネージャを使用します。レポートのデータを生成するprocは約5分間実行されます。このレポートは、約12分後にブラウザ/ビューアでSSRSネイティブ形式でレンダリングされます。レポートマネージャのブラウザ/ビューアを使用してpdfにエクスポートするには、さらに55分かかります。これは確実に動作し、無作為に1.03gbのpdfを生成します。
- レポートに3時間 サーバー
- へのhttpRuntime ExecutionTimeout 値を設定します。ここでは
は、私はレポートは、WebサービスAPIを介して作業を取得しようとした、より明白なものの一部であります無効なHTTPは
- が
- がサーバー上でタイムアウトしたことがないようにレポートを設定し、レポートサーバー上でスクリプトのタイムアウトを増加し、レポートサーバー上のキープアライブを
- クライアントコールでレポートのタイムアウトを数時間に設定する
私が試した調整から、タイムアウトの問題がなくなったと言っても大丈夫です。
エラーメッセージの調査に基づいて、WebサービスAPIはデフォルトでチャンクレスポンスを送信しないと考えています。つまり、1つの応答ですべての1.3Gbをワイヤで送信しようとします。ある時点で、IISはタオルを投げます。残念ながら、APIはWebサービス設定を抽象化していないので、応答チャンクを有効にする方法を見つけることができないようです。
- PDFエクスポートフェーズやPDFのサイズを減らしたり、最適化したりするには、とにかく誰も知っていますか?
- SSRSの応答チャンクを有効にする方法はありますか?
- これは他の理論がありますが、これはなぜサーバー上で実行されますが、APIでは実行されないのですか?
編集:kcrumleyの投稿を読んだ後、ファイルサイズ/ページ数を取って平均ページサイズを調べ始めました。興味深いことに、小さなレポートでは、各ページが約5Kになるように数学が機能します。興味深いことに、レポートが大きくなると、この「平均」が増加します。たとえば、8000ページのレポートは平均40K /ページです。非常に奇妙な。また、各グループの最後のページを除いて1ページあたりのレコード数が設定されているので、一部のページでは他のレコードより多くのレコードがあることはありません。