0

我正在使用 ReportExecutionService 对象使用 Render 方法调用报告服务报告。我从 Windows 服务调用中多次调用 Web 服务,加载具有多个参数的多个报告。

一切正常,但我想知道:

  1. 有没有办法通过重用从rs.ExecutionHeaderValue.ExecutionID属性中获得的 SessionId 来提高进程性能?
  2. 如果第一个问题的答案是“是”:如何在通话中重用 SessionId?
4

1 回答 1

0

有趣的问题,我将向您提供我在跨多个平台和环境与 SSRS 服务器的战斗中发现的两点:

  1. SSRS 速度上最大的问题似乎来自服务本身,我相信在 2008 年和 2012 年每 12 小时回收一次。在此之前不确定。我所做的是创建“保持活动”服务调用,该调用只需转到 http:// (servername)/ReportServer 的根目录并对其进行 ping 操作以使其保持活动状态。如果在这段时间内没有活动,它往往会变慢。

  2. 我知道,如果您喜欢冒险并且了解 .NET,您可以尝试查看是否可以多次生成报告。基本上使用 C# 的过程是直接在代码中调用 SSRS 的 Web 服务(我创建了一个代理类来执行此操作),然后将报告加载到服务、参数,然后渲染它。当您灌输一个实例时,您可以多次加载它。我从未尝试过,但在我尝试过的少数情况下,直接从代理呈现报告的速度非常快。

此方法中有一个会话 ID,但我不确定会话是否保留在报告呈现或服务器调用中。我猜是报告渲染,但我从来没有测试过这个,因为我通常一次调用我的方法来创建一个,而且它们对于我的规范来说已经足够快了。

如果您有兴趣,这里是#2 的链接:Programmatically Export SSRS report from sharepoint using ReportService2010.asmx

于 2013-03-20T22:02:00.043 回答