报告在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次,错误消息消失。
我该怎么做才能解决此问题,以便报告永远不会收到此错误?
答案 0 :(得分:1)
您知道您的查询是否已陷入僵局吗?可能是报告在高峰时段在服务器上被阻止。
考虑优化您的查询,或者如果可以未提交读取数据,请在每个FROM和Join子句后添加WITH(NOLOCK)。如果您不熟悉它,请务必谷歌WITH(NOLOCK),以便您知道未提交的内容可以做什么。
答案 1 :(得分:1)
有几个步骤可以正确解决此问题 我建议按照以下顺序关注它们:
<强> 1。缩短查询执行时间
在SSMS中执行DataSet Registration_of_Entity
的查询,看看完成所需的时间
如果您的查询需要的执行时间超过为DataSet指定的超时,则应首先尝试减少此时间,例如:
查看执行计划可以提供帮助。
<强> 2。降低查询复杂性
您需要所有这些行/列吗?
你需要在数据库方面进行所有这些计算吗?
可以在报告中完成吗?
你可以尝试:
再次,查看执行计划可以提供帮助。
第3。探索与查询本身无关的其他优化
您确实需要此查询,但是您是否需要实时数据?
是否在此服务器上执行了很多其他查询?
你可以看看:
请注意,从SSRS 2008 R2可以缓存新的共享数据集。一世 知道它并不适用于你的情况,但谁知道,它可能有所帮助 其他
<强> 4。最后的手段
如果上述所有步骤都无法解决问题,则可以增加超时时间
Here是指向博客文章的链接,用于解释不同的超时以及如何增加超时。