我应该在SQL Reporting Services中使用存储过程进行报告吗?

时间:2010-08-04 08:13:37

标签: sql-server-2005 reporting-services report

当我为SQL Reporting Services编写报告时,我将SQL脚本放在我的报告(rdl)中。当我在SQL Management Studio中运行此脚本大约需要1秒钟,但报告生成的时间很长(有时报告会抛出有关超时的异常)。

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

还有一个问题 - 当SQL脚本返回大量行时,报告是否获取所有行并仅显示一个页面,或者只从SQL服务器获取一页?

提前致谢。

2 个答案:

答案 0 :(得分:2)

存储过程vs ad-hoc / dynamic 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 :(得分:1)

我使用存储过程但不是出于任何速度原因(我怀疑它会有所不同)。如果您知道所有调用代码都在存储过程中而不是隐藏在rdl文件中,那么重构数据库要容易得多。

根据我对报告服务的记忆,渲染步骤本身可能非常消耗,并且可能会超时而不是数据检索。

您是否在查看报告时尝试使用SQL事件探查器,以查看显示为已完成的数据与呈现报告之间的差距有多长?