【问题标题】:Execution 'iwy2vpzo52pmp555ftfn4455' cannot be found (rsExecutionNotFound)找不到执行“iwy2vpzo52pmp555ftfn4455”(rsExecutionNotFound)
【发布时间】:2010-01-12 16:43:45
【问题描述】:

部分用户在运行报告时遇到以下错误。

• 找不到执行“iwy2vpzo52pmp555ftfn4455”(rsExecutionNotFound)

它们早上运行良好。 有什么建议吗?

谢谢

【问题讨论】:

  • 早上运行它们?
  • 我在尝试使用 StateServer 进行会话时遇到了这个错误。尝试反序列化会话数据时出错。

标签: reporting-services reportingservices-2005


【解决方案1】:

我可以帮忙。

问题在于 ReportViewer 控件使用 Session 来存储当前正在执行的报表。一旦您离开报告,该项目仍然存在并最终失去其“执行上下文”,这是报告服务器缓存报告的方式。

因此,在浏览报表之前,应尝试将这些报表的Session清空,使Session中没有缓存的报表,ReportViewer控件才能正常工作。

你还会发现有时候在访问Session.Keys.Count的时候会出现这个错误,同样是执行上下文失败了。

确保在显示报告的页面上执行此操作!

这两个选项是:

if (!IsPostBack)
{
    HttpContext.Current.Session.Clear();
    ReportViewer1.ServerReport.ReportServerUrl = new Uri(ReportServerUrl, System.UriKind.Absolute);
    ReportViewer1.ServerReport.ReportPath = ReportPath;
    System.Collections.Generic.List<ReportParameter> parameters = new System.Collections.Generic.List<ReportParameter>();
    ....

    ReportViewer1.ServerReport.SetParameters(parameters);
    ReportViewer1.ServerReport.Refresh();
}

或者

for (int i = 0; i < HttpContext.Current.Session.Keys.Count; )
{
   if (HttpContext.Current.Session[i].ToString() == "Microsoft.Reporting.WebForms.ReportHierarchy")
       HttpContext.Current.Session.RemoveAt(i);
   else
      i++;
}

【讨论】:

  • 请注意,这是 SSRS 2005 中的一个“错误”。显然缓存机制在 2008 年发生了变化。我通过电话向 MS 提交了一个错误,并说该问题已传递给产品团队( 2010 年 9 月/10 月)
  • 如果您在设置参数并调用 ServerReport.Refresh() 之前在 webform 代码的 if(!IsPostBack) 块内调用 ReportViewer.Reset() 可能能够完成相同的操作方法。
【解决方案2】:

我使用的是 SSRS 2017,在尝试使用 URL 访问将报表加载到我的 MVC 项目时遇到了这个问题。我的问题与会话有关。

要自行检查,您可以尝试删除RSExecutionSession cookie 并重新加载您的报告。不幸的是,这只是一个临时修复。

如果这确实有效,请尝试将 rs:ClearSession=true 添加到您的查询字符串中。
您可以阅读有关此设置的信息here

【讨论】:

  • rs:ClearSession=true 帮我做了,谢谢 - 我挠头一个小时!
【解决方案3】:

在报告路径上查找尾随空格。这就是我的原因。

【讨论】:

  • 尾随空格是我的问题。尝试了查看器重置,并设置了超时,但空间是问题。我可以奇怪地得到参数和几乎可以工作的东西,但是需要修剪空间
【解决方案4】:

web.config的冒充上,使用身份

impersonate="true" 
userName="xxxxx" 
password="xxxxx"  

而不是:!--&lt;identity impersonate="true"

希望对你有帮助

【讨论】:

    【解决方案5】:

    如果您运行的是 SQL Server Express 版本,则 SQL Server 代理不会运行以清理旧的 SSRS 会话。您需要在 SSRS DB 上运行作业以清理旧会话。

    我的报告运行时间为 10 秒,导出时间为 2 秒 - 所以这与会话到期时长无关。

    在导出报告一小时后将报告导出到我的应用程序时,我会收到错误消息。

    【讨论】:

      【解决方案6】:

      此错误导致我的应用程序显示运行时错误。

      我将此添加到 Global.asax 类以解决错误。尝试过 Server.Clear 但一无所获。 Session.Clear 完全摆脱了错误。

      Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
          If ex.InnerException IsNot Nothing Then
                  If ex.InnerException.ToString.Contains("The report execution") AndAlso
                     ex.InnerException.ToString.Contains("rsExecutionNotFound") Then
                      Session.Clear()
                      Return
                  End If
              End If
      End Sub
      

      虽然它可能不是 100% 适用于上述问题,但我无法找到任何其他解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-11
        • 2019-05-30
        • 2011-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多