use*_*554 76 performance report reportingservices-2005 reporting-services
我有一个SSRS报告,它调用存储过程.如果我直接从查询窗口运行存储过程,它将在2秒内返回.但是,从2005 SSRS报告运行的同一查询最多需要5分钟才能完成.这不仅仅发生在第一次运行,它每次都会发生.另外,我在其他环境中没有看到同样的问题.
关于为什么SSRS报告在这个特定环境中运行如此缓慢的任何想法?
use*_*554 104
感谢您提供的建议.我们找到了一个解决方案,结果确实与参数有关.由于"参数嗅探",SQL Server在从SSRS报告执行时产生了一个复杂的执行计划.解决方法是在存储过程内部声明变量,并将传入参数分配给变量.然后查询使用变量而不是参数.这导致查询始终执行,无论是从SQL Server管理器还是通过SSRS报告调用.
小智 15
将其添加到proc的末尾: option(recompile)
这将使报表的运行速度几乎与存储过程一样快
JHF*_*HFB 14
我将补充说,我对非存储过程查询有同样的问题 - 只是一个普通的select语句.为了解决这个问题,我在数据集SQL语句中声明了一个变量,并将其设置为等于SSRS参数.
多么烦人的解决方法!不过,谢谢大家让我接近答案!
小智 11
我有同样的问题,这是我对问题的描述
"我创建了一个可以生成2200行的存储过程并且将在近2秒内执行但是在从SSRS 2008调用存储过程并运行报告之后它实际上从未运行过,最终我必须杀死BIDS(商业智能开发工作室)来自任务经理".
我尝试了什么:我尝试从reportuser登录运行SP,但SP也正常运行该用户,我检查了Profiler但没有任何结果.
解:
实际上问题在于,即使SP正在生成结果,但SSRS引擎需要时间来读取这些行并将其渲染回来.所以我在SP中添加了WITH RECOMPILE选项并运行报告..这是奇迹发生时我的问题得到了解决.
小智 5
我有相同的情况发生..非常基本的报告,SP(只需要1个参数)需要5秒才能恢复10K记录,但报告需要6分钟才能运行.根据分析器和RS ExecutionLogStorage表,该报告花费了所有时间在查询上.Brian S.的评论让我得到了解决方案.我只是在SP中的AS语句之前添加WITH RECOMPILE,现在报告时间几乎与SP执行时间相匹配.
如果您的存储过程使用链接服务器或openquery,它们可能会自行运行,但需要很长时间才能在SSRS中呈现.一些一般性建议:
我看到问题已经得到解答,我只是添加了这个以防有人遇到同样的问题.
小智 5
我在报告检索 32000 行时遇到了报告 html 输出问题。查询运行得很快,但输出到 Web 浏览器的速度非常慢。就我而言,我必须激活“交互式分页”以允许用户查看第一页并能够生成 Excel 文件。该解决方案的优点是第一页出现速度快,用户可以生成导出到 Excel 或 PDF,缺点是用户只能滚动当前页面。如果用户想要查看更多内容,他/她必须使用网格上方的导航按钮。在我的例子中,用户接受了这种行为,因为导出到 Excel 更为重要。
要激活“交互式分页”,您必须单击报告窗格中的空闲区域并更改属性窗格中报告级别上的“InteractiveSize”\“Height”属性。将此属性设置为不为 0。在我的情况下,我设置为 8.5 英寸。还要确保取消选中 Tablix 级别上的“如果可能,保持在一页上”属性(右键单击 Tablix,然后单击“Tablix 属性”,然后单击“常规”\“分页选项”)。
您可以做几件事,无需执行实际报告,只需从报告服务的数据选项卡中运行存储过程即可。还需要时间吗?另一种选择是使用 SQL Profiler 并确定进出数据库系统的内容。
您可以做另一件事来测试它,以便重新创建一个不带任何参数的简单报告。运行报告,看看是否有所不同。您的 RS 报告可能已损坏或格式错误,从而可能导致渲染速度非常慢。