【发布时间】:2014-04-29 14:37:51
【问题描述】:
我想知道是否有可能减少 SSRS 报告产生的数据库负载。 我有一份由几个子报告组成的 SSRS 报告。他们每个人都至少有一个数据库查询。
- 它们中的许多查询相同的数据,因为大多数子报表都有一种填充动态数据的模板标题。
- 根据查询是否返回任何数据显示一些子报告。所以一旦查询到数据就决定是否显示报表。然后报表本身会查询相同的数据以将其显示在表格中
总的来说,我可以说我需要一种机制来将查询的数据库数据从父报表传递到子报表。父报表将查询一些数据,它将遍历数据集,并且对于每个数据集,它将显示一个子报表,将当前数据集作为参数传递。
我找不到传递数据集(数据行)的机制。这就是为什么我通过传递一种数据集 ID 来显示子报告。子报表本身再次查询相同的数据,按传递的数据集 ID 过滤并仅显示相关数据集。这会对数据库造成巨大的负载。
提前谢谢你!
【问题讨论】:
-
您需要分析具体的查询并进行相应的优化。如果您总共运行了 7 个查询,请分析所有查询,找出导致“数据库负载”的原因并修复它。如果您对主/详细类型查询有疑虑,您需要将报表转换为只运行一个查询,但这可能是不可能的(或更快)。请注意,如果您重复运行相同的查询(即使使用不同的参数),无论如何您都会通过缓存等获得一些效率。
标签: performance reporting-services ssrs-2008