标识执行状态

超文本传输协议(HTTP)是无连接和无状态协议。 无连接和无状态意味着它不会自动指示不同的请求来自同一客户端,甚至单个浏览器实例是否仍在主动查看页面或站点。 会话创建逻辑连接,以通过 HTTP 在服务器与客户端之间维护状态。 与特定会话相关的用户特定的信息称为会话状态。

会话管理涉及将 HTTP 请求与从同一个会话生成的其他先前请求相关。 如果没有会话管理,则由于 HTTP 协议的无连接和无状态性质,因此这些请求将与报表服务器 Web 服务无关。

Reporting Services 不会公开会话状态的整体概念,例如由 ASP.NET 公开的会话状态。 然而,当执行报表时,报表服务器以 execution 的形式维护方法调用之间的状态。 执行允许用户通过多种方式与报表交互 - 包括从报表服务器加载报表,为报表设置凭据和参数,以及呈现报表。

在与报表服务器通信时,客户端使用执行来管理报表查看和用户导航到报表中的其他页面,以及显示或隐藏报表的各个部分。 对于客户端应用程序正在运行的每个报表,都存在一个唯一执行。

通常,当用户导航到浏览器或客户端应用程序并选择要查看的报表时,执行的生存期开始。 在收到对执行的最后一个请求(默认超时为 20 分钟)后,将放弃执行。

从 Web 服务角度来看,当调用报表服务器 Web 服务 LoadReportLoadReportDefinitionRender 方法时,生存期开始。 应用程序可以使用其他方法来控制处于活动状态的执行(例如,设置参数和设置数据源)。 在收到对执行的最后一个请求(默认超时为 20 分钟)后,将放弃执行。

应用程序通过保存ExecutionID对 Web 服务和RenderRenderStream方法的调用跟踪多个活动执行。 执行 ID 在 SOAP 标头中从 LoadReportLoadReportDefinition 方法返回。

下图显示报表的处理和呈现路径。

显示报表的处理和呈现路径的关系图。

为了支持前面所述的函数,当前 SOAP 呈现方法拆分为包含执行初始化、处理和呈现阶段的多个方法。

若要以编程方式呈现报表,您必须:

当报表处于会话中时,存储在报表服务器数据库中的基础报表可能发生变化。 例如,报表定义可能发生变化,可能删除或移动报表,用户权限可能变化。 如果报表位于活动会话中,则对基础报表(即存储在报表服务器数据库中的报表)所做的更改不会影响它。

您还可以使用 URL 访问命令管理报表会话。