SSRS报告在生产服务器中计时(刷新3次后除外)

时间:2015-05-20 11:36:30

标签: reporting-services ssrs-2008

报告在DEV和QA服务器中正常工作,但在生产中出现以下错误:

An error occurred during client rendering. 
An error has occurred during report processing. 
Query execution failed for dataset 'Registration_of_Entity'. 
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. 

奇怪的是,管理员已向我保证此报告现已设置,因此根本没有超时。

每天早上刷新报告3次,错误消息消失。

我该怎么做才能解决此问题,以便报告永远不会收到此错误?

2 个答案:

答案 0 :(得分:1)

您知道您的查询是否已陷入僵局吗?可能是报告在高​​峰时段在服务器上被阻止。

考虑优化您的查询,或者如果可以未提交读取数据,请在每个FROM和Join子句后添加WITH(NOLOCK)。如果您不熟悉它,请务必谷歌WITH(NOLOCK),以便您知道未提交的内容可以做什么。

答案 1 :(得分:1)

有几个步骤可以正确解决此问题 我建议按照以下顺序关注它们:

<强> 1。缩短查询执行时间
在SSMS中执行DataSet Registration_of_Entity的查询,看看完成所需的时间 如果您的查询需要的执行时间超过为DataSet指定的超时,则应首先尝试减少此时间,例如:

  • 更改查询结构(重新考虑加入,使用CTE,......)
  • 添加索引

查看执行计划可以提供帮助。

<强> 2。降低查询复杂性

您需要所有这些行/列吗? 你需要在数据库方面进行所有这些计算吗? 可以在报告中完成吗?
你可以尝试:

  • 降低查询复杂性
  • 在较小的查询中拆分查询

再次,查看执行计划可以提供帮助。

第3。探索与查询本身无关的其他优化
您确实需要此查询,但是您是否需要实时数据? 是否在此服务器上执行了很多其他查询? 你可以看看:

  • 缓存
  • 复制/负载平衡
  

请注意,从SSRS 2008 R2可以缓存新的共享数据集。一世   知道它并不适用于你的情况,但谁知道,它可能有所帮助   其他

<强> 4。最后的手段
如果上述所有步骤都无法解决问题,则可以增加超时时间 Here是指向博客文章的链接,用于解释不同的超时以及如何增加超时。