我正在使用SSRS 2008 R2和报告生成器3.0。我有一个需要帮助的级联报告问题。第一份报告运行良好。点击报告中的链接将@processID参数传递给后续报告。替换2008 R2中的参数SSRS
现在,当在SSMS中直接使用字符串而不是参数运行查询时,需要1秒钟的时间。当我通过参数SSRS运行它大约需要15分钟。我读过SSRS不能很好地处理参数。我想要做的是找到一种方法来将参数更改为一个字符串,然后发送,或者如果有人知道更好的方法。
下面是报告运行查询:
SELECT ResultDetail_View.processOid, ResultDetail_View.applicationId, outputItem.outputValue, ResultDetail_View.startTime, ResultDetail_View.resultStatus,
ResultDetail_View.statusMessage, ResultDetail_View.endTime, ResultDetail_View.ErrRec, COUNT(Summary.Id) AS SumRec
FROM ResultDetail_View LEFT OUTER JOIN
Summary ON ResultDetail_View.processOid = Summary.Id LEFT OUTER JOIN
outputItem ON ResultDetail_View.outputOid = outputItem.outputItemOid
GROUP BY ResultDetail_View.processOid, ResultDetail_View.applicationId, outputItem.outputValue, ResultDetail_View.startTime, ResultDetail_View.resultStatus,
ResultDetail_View.statusMessage, ResultDetail_View.endTime, ResultDetail_View.ErrRec
HAVING (ResultDetail_View.processOid = @processID)
ORDER BY ResultDetail_View.startTime
如何在报表中运行查询?这是一个存储过程吗?如果是这样,这看起来很像[参数嗅探](https://www.brentozar.com/archive/2013/06/the-elephant-and-the-mouse-or-parameter-sniffing-in-sql-server /)这将阻碍SQL Server选择最佳查询计划的能力。 – iamdave
不幸的是,这些是继承的报告。这些都是特别格式,而不是存储过程。我发布的代码实际上是运行的数据集查询。我还没有找到参数嗅探。为了以防万一,我已经进行了重新编译,并且它在SSRS和SSMS中的使用时间仍然相同。 – bwilliamson
您是否在sql server实例上运行跟踪以确切地查看报表运行时服务器上正在执行的查询。一旦你有了这些,如果你直接在同一台服务器上的SSMS中运行它,你应该得到完全相同的性能(无论是好是坏)。这不是一个答案,但至少应该帮助你调查问题。 –