SSRS2005超时错误

时间:2009-11-19 15:28:09

标签: stored-procedures reporting-services reportingservices-2005 session-timeout

过去两天我一直在圈子里跑来跑去,试图在客户的现场环境中解决问题。我想我也可以在这里发布,因为谷歌给了我关于错误信息的非常有限的信息(确切地说是5个结果)。

当使用某个参数时,在SSRS2005中请求某个报告时,错误会归结为超时。

部署方案是: 机器#1运行报告服务(SQL2005,W2K3,IIS6) Machine#2运行数据仓库数据库(SQL2005,W2K3),它是#1的数据源 两台计算机都在同一个vm集群和LAN上运行。

报告要求一个相当简单的SP - 让我们称之为sp(param $ a,param $ b)。 当param $ a请求填充时,它会正确执行。使用param $ b时,它会在全局超时周期过后超时。

如果我直接从#2的sql management studio运行param $ b的存储过程,它会很好地返回结果(在3-4s内)。

我在#2上描述了数据仓库数据库,当使用param $ b时,从报告服务到数据库的查询永远不会达到#2。

在使用param $ b时,我在超时时从SSRS Web界面直接调用报告时出现的错误消息是:

“报告处理期间发生错误。 无法读取数据集DataSet的下一个数据行。 当前命令发生严重错误。结果(如果有的话)应该被丢弃。用户取消了操作。“

除了错误消息rsProcessingAborted

之外,SSRS的ExecutionLog确实给了我很多信息

我已经没有如何解决这个问题的想法了。所以我非常感谢任何意见,建议或想法。

提前致谢!

1 个答案:

答案 0 :(得分:2)

您需要做的第一件事是确保您的统计信息是最新的。

(听起来好像parameter sniffing使用了错误的查询计划,如本答案所述:Parameter Sniffing (or Spoofing) in SQL Server)。

在SQL Server 2005中解决此问题的一种方法是使用OPTIMIZE FOR查询提示。另请参阅OPTIMIZE FOR query hint in SQL Server 2005

此外,您是否为部分或全部索引定期编制索引重建作业?