【问题标题】:Should I use stored procedures for reports in SQL Reporting Services我应该对 SQL Reporting Services 中的报告使用存储过程吗
【发布时间】:2010-08-04 21:45:16
【问题描述】:

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

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

还有一个问题 - 当 SQL 脚本返回很多行时,报告是获取所有行并只显示一页,还是只从 SQL 服务器获取一页?

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    存储过程与临时/动态 sql: http://www.codinghorror.com/blog/2005/05/stored-procedures-vs-ad-hoc-sql.html

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

    我个人更喜欢 procs,因为它使重用变得更容易。

    您可以使用 RSExecutionlog/(或不使用!)查看处理需要多长时间的情况: http://social.msdn.microsoft.com/forums/en-US/sqlreportingservices/thread/804174a9-0f22-49a7-93f2-be4dbb3c0a4d

    【讨论】:

      【解决方案2】:

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

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

      您是否尝试过在查看报表时使用 SQL Profiler 来查看语句让数据显示为已完成与正在呈现报表之间的差距?

      【讨论】:

      • 谢谢,我同意你的重构,但我不使用存储过程,因为它更容易发布报告(我不需要发布数据库)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-04
      • 1970-01-01
      • 2023-03-24
      相关资源
      最近更新 更多