0

过去两天我一直在绕圈子,试图找出我们客户生活环境中的问题。我想我不妨把它贴在这里,因为谷歌给了我关于错误消息的非常有限的信息(准确地说是 5 个结果)。

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

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

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

如果我在#2 上直接从 sql management studio 使用参数 $b 运行存储过程,它会完美返回结果(在 3-4 秒内)。

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

使用参数 $b 时,我在超时时收到的错误消息是:直接从 SSRS Web 界面调用报告时:

“报表处理过程中发生错误。 无法读取数据集 DataSet 的下一个数据行。 当前命令发生严重错误。结果(如果有)应丢弃。操作已被用户取消。”

除了错误消息 rsProcessingAborted 之外,SSRS 的 ExecutionLog 确实给了我很多信息

我已经没有如何解决这个问题的想法了。因此,我将不胜感激任何意见、建议或想法。

提前致谢!

4

1 回答 1

2

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

(这听起来像是由于参数嗅探而使用了不正确的查询计划的情况,如此 SO 答案中所述:SQL Server 中的参数嗅探(或欺骗))。

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

此外,您是否有针对部分或全部索引的定期计划索引重建作业?

于 2009-11-19T15:31:10.470 回答