虽然我理解这个问题相当模糊,因为我没有给大家提供我想要的细节,但我希望能对我的生成代码或报告本身进行一些一般性的改进,以加快它们的速度。我已经要求更多的硬件,但被拒绝了。
public Stream GenerateReport(string reportName, string format)
{
if (reportName == null)
throw new ArgumentNullException("reportName");
reportExecutionService.LoadReport(reportName, null);
string extension;
string encoding;
string mimeType;
ReportExecution2005.Warning[] warnings;
string[] streamIDs;
byte[] results = reportExecutionService.Render(format, null, out extension,
out encoding, out mimeType, out warnings, out streamIDs);
return new MemoryStream(results);
}每个报告本身都需要6-10秒。我已经将瓶颈缩小到Reporting Services本身。我应该从哪里开始寻找消除潜在的速度瓶颈。注意:一些代码已经被删除,以保护无辜的人。
发布于 2009-02-06 19:40:49
尽管与您发布的代码没有直接关系,但在Reporting Services中编写报表时,您应该始终考虑以下几个常规增强功能:
我希望你已经在做上面的事情了,这不是一个相关的帖子。:)
发布于 2009-02-06 21:09:03
如果您已经将范围缩小到仅基于您的客户端代码的Reporting Services,我将查看检索您的数据的查询/SP。在我那个时代,我遇到过一些看起来相当清白的令人讨厌的问题。
发布于 2009-02-08 02:42:42
我刚做了几个非常难看的报告!我不得不在每个表包含几百万行的多个表上使用不可靠的连接条件。
最终创建了一个控制台应用程序,用于在前一天每晚进行收集。所有的逻辑都太繁重了,所以生成报告花费了太长的时间。现在速度不再是问题了。
这取决于报告的类型。这三份报告只需要昨天的数字。但正如奥斯汀所说,查询或其他什么通常是瓶颈。
另一件要记住的事情是,报告会在一段时间后“过期”(这是默认设置)。因此,如果您有一段时间没有使用该报告,则生成报告需要更长的时间。如果你在下一次之后再做一次,速度会更快。解决方法是转到internet explorer中的报告并单击属性,然后查看执行和历史记录(可以调整它们以改善报告的呈现)。但是,如果数据很关键,您可能会得到旧数据。
https://stackoverflow.com/questions/521822
复制相似问题