Reporting services 引用同一数据集的多个表

Reporting services 引用同一数据集的多个表,reporting-services,ssrs-2008-r2,Reporting Services,Ssrs 2008 R2,我有一个调用存储过程的共享数据集。我有多个表,它们使用相同的数据集,并且在表本身上有过滤器,只包括某些记录 数据集是为每个表调用还是只调用一次?最简单的方法是运行报告并查看数据库中发生了什么。在本例中,我使用SQL Server Profiler查看数据库活动。我已经使用一个通过VisualStudio运行的简单报告进行了测试 数据集: 具有两个表、不同筛选器和相同数据集的报表: 运行报告: 检查SQL Server探查器中记录的内容: 您可以看到数据集查询只运行了一次。因此,在这种

我有一个调用存储过程的共享数据集。我有多个表,它们使用相同的数据集,并且在表本身上有过滤器,只包括某些记录


数据集是为每个表调用还是只调用一次?

最简单的方法是运行报告并查看数据库中发生了什么。在本例中,我使用SQL Server Profiler查看数据库活动。我已经使用一个通过VisualStudio运行的简单报告进行了测试

数据集:

具有两个表、不同筛选器和相同数据集的报表:

运行报告:

检查SQL Server探查器中记录的内容:

您可以看到数据集查询只运行了一次。因此,在这种情况下,我们可以说多次引用数据集将而不是导致多次加载数据集


对于SSRS,说在所有情况下都是如此总是有风险的,但基于此示例,这似乎是一个不错的选择。

当您说共享数据集时,您是指部署在报表服务器上的实际共享数据集吗,或者多个报表项共享的报表内部的数据集?您可以放心地说,只要报表中的元素存在,在所有场景中都会出现这种情况。这并不是说,当数据集只执行一次时,性能会更好——您很可能会发现,数据库并行处理几个小调用的速度比SSR传输一个更大的数据集并对其进行多次过滤的速度要快。