2010-08-04 77 views
0

当我为SQL Reporting Services编写报告时,我在报告(rdl)中放入了SQL脚本。当我在SQL Management Studio中运行这个脚本时,大约需要1秒,但是报告生成的时间很长(有时候,报告会引发超时异常)。我应该在SQL Reporting Services中使用存储过程报告

我应该写存储过程并在报告中使用它吗?它会更快吗?

还有一个问题 - 当SQL脚本返回很多行时,报告是否获取所有行并只显示一个页面,或者它只从SQL-server中获取一个页面?

在此先感谢。

回答

2

存储的特效VS即席/动态SQL: http://www.codinghorror.com/blog/2005/05/stored-procedures-vs-ad-hoc-sql.html

如果数据是报告正在运行之间的相对不变的,您不妨考虑一下缓存: http://msdn.microsoft.com/en-us/library/ms155927.aspx

我个人偏爱特效,因为它使重用更容易。

您可以点击进入RSExecutionlog /(或不!),看看有什么是在这些方面去对事情多久正在采取的过程: http://social.msdn.microsoft.com/forums/en-US/sqlreportingservices/thread/804174a9-0f22-49a7-93f2-be4dbb3c0a4d

1

我会使用存储过程,但不是任何速度的原因(我怀疑它会有所作为)。如果知道所有的调用代码都在存储过程中,而不是埋在rdl文件中,则重构数据库要容易得多。

从我记得有关报告服务的情况来看,渲染步骤本身可能非常耗时,并且可能会在渲染而非数据检索上超时。

您是否在尝试使用SQL Profiler的同时查看报表以查看获取数据显示为已完成的语句与正在呈现的报表之间的差距多长时间?

+0

谢谢,我同意你关于重构,但我不不使用存储过程,因为它更容易发布报告(我不需要发布数据库) – 2010-08-04 08:35:06

+0

谢谢我会尝试使用Profiler – 2010-08-04 10:09:39

相关问题