最近、SharePoint ページでレポート ビューアー Web パーツを使用しようとしました。レポートは SharePoint 外で何年も使用されています。現在、SSRS 2008 R2ネイティブ モードと SharePoint 2007 を使用しています。しばらくすると、Web パーツのあるページに移動すると、次のエラーが表示されます。
The report execution yoty4kmgk3hjr5uup1ng0a45 has expired or cannot be found. (rsExecutionNotFound)
そして、SSRS ログには次のように表示されます。
library!ReportServer_0-33!13bc!10/28/2013-11:09:45:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerStorageException: , An error occurred within the report server database. This may be due to a connection failure, timeout or low disk condition within the database.;
session!ReportServer_0-33!13bc!10/28/2013-11:09:45:: e ERROR: Error in getting session data: Invalid or Expired Session: yoty4kmgk3hjr5uup1ng0a45
session!ReportServer_0-33!13bc!10/28/2013-11:09:45:: i INFO: LoadSnapshot: Item with session: yoty4kmgk3hjr5uup1ng0a45, reportPath: , userName: DOMAIN\USER not found in the database
library!ReportServer_0-33!13bc!10/28/2013-11:09:45:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ExecutionNotFoundException: , Microsoft.ReportingServices.Diagnostics.Utilities.ExecutionNotFoundException: The report execution yoty4kmgk3hjr5uup1ng0a45 has expired or cannot be found.;
library!ReportServer_0-33!f84!10/28/2013-11:09:45:: i INFO: RenderForNewSession('/PATH/REPORT')
今、私はこれが何であるかを正確に知っています。私たちはいつもこれを手に入れます。レポートを実行すると、SSRS は一時的なスナップショットを取得してセッションに関連付け、スナップショットからブラウザーにレンダリングします。レポートをブラウザーで長時間開いたままにしておくと、セッションがタイムアウトし、一時的なスナップショットが破棄されます。戻ってレポートを操作しようとすると、セッションが終了しているため、このエラーが発生します。これがブラウザーで発生した場合は、レポート マネージャーに戻ってレポートを再実行し、新しいセッションとスナップショットを取得するだけです。
現在、クリエイティブ チームは SharePoint のレイアウトとデザインに取り組んでいます。彼らは少なくとも 3 つの異なるサンプル ページを使用して作業してきました。各ページは、レポート ビューアー Web パーツのインスタンスで同じ 2 つの SSRS レポートをホストしています。レポートを最初にページに配置すると、レポートは正常にレンダリングされます。ただし、SSRS がセッションを期限切れにした後、Web パーツにはセッションが見つからないというエラーが表示されます。各ページは同じレポートに対して異なるセッションを確立するため、複数のセッションが開かれ、別のページでエラーが表示され始めた後も、レポートは 1 つのページでレンダリングされ続けます。
メッセージは完全に正しいです。セッションは存在しません。セッションは一時的なもので、タイムアウトは 600 秒です。これは予期される動作です。では、ページ内の Web パーツのインスタンスがまだデッド セッションを保持しているのはなぜでしょうか? ページから移動して戻ってきた場合、またはページを更新した場合、SharePoint レポート ビューアー Web パーツがレポートを実行せず、新しい実行 ID を取得しないのはなぜですか? Web パーツは、何が起こっているかを知るのに十分なほどインテリジェントではありませんか? 満たされていないインスタンスの有効期間についての期待はありますか?
問題は、SSRS SharePoint Web パーツを適切に動作させるにはどうすればよいかということです。SharePoint のコンテキストでは、ユーザーはページを開いてそのコンテンツを操作できる必要があり、コンテンツがどこから来たのか、どのようにそこに到達したのかを意識する必要はありません。エクスペリエンスはシームレスで透過的でなければなりません。この場合、Web パーツは SharePoint サーバーでセッションをキャッシュしているので [推測]、SSRS がセッションを強制終了すると、SharePoint のビューはエラーをレンダリングするだけで、更新する方法が見つかりません。
これを解決する方法はありますか?