我最近尝试在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布局和设计。他们一直在使用至少三个不同的示例页面,每个页面在报表查看器Web部件的实例中承载相同的两个SSRS报表。当您最初将报告放在页面上时,报告会正常呈现。但是,在SSRS到期后,Web部件将显示会话未找到错误。每个页面为同一个报告建立一个不同的会话,因此将打开多个会话,并且报告将在开始在另一个页面上显示错误后继续在一个页面上呈现。
消息绝对正确,会话不存在。会话是暂时的,超时为600秒。这是预期的行为。那么为什么页面中的Web部件实例仍然保持死对话?如果您离开页面然后返回,或者您刷新页面,为什么SharePoint Report Viewer Web部件不会执行报告并获得新的执行ID?网络部分是不是很聪明,不知道发生了什么?是否存在一些未满足实例生命周期的期望?
所以问题是:我们怎样才能使SSRS SharePoint Web部件表现良好?在SharePoint上下文中,用户应该能够打开页面并与其上的内容进行交互,不知道内容来自何处或如何到达,这种体验应该是无缝且透明的。在这种情况下,Web部件正在缓存SharePoint服务器上的会话[我猜]所以一旦SSRS杀死会话,SharePoint中的视图只会呈现错误,我们找不到刷新它的方法。
有没有办法解决这个问题?
答案 0 :(得分:0)
尝试增加ssrs超时。我面临同样的问题,因为我在我的asp.net Web应用程序中使用ssrs url来生成报告。如果我将页面打开一段时间并返回它,我会收到“报告执行已过期”的相同错误。我尝试了不同的选项,包括在ssrs url中添加& rc:UniqueGuid = newguid,但没有任何帮助。