【问题标题】:SSRS 2008 slow preview in Visual Studio 2008 when using expressions in groups在组中使用表达式时,Visual Studio 2008 中的 SSRS 2008 慢速预览
【发布时间】:2012-09-10 08:35:10
【问题描述】:

在 Visual Studio 2008 中创建使用如下表达式的矩阵报表时,预览所需的时间比预期的要长。

=Fields(Parameters!ColumnGroupParam.Value).Value

如果同一报表部署到报表服务器并在报表管理器中查看,或者报表是使用报表生成器而不是 Visual Studio 设计的,则不会出现问题并且报表生成速度很快。

从 SQL Server Profiler 查看结果时,从 Visual Studio 查询查询需要更长的时间才能返回结果集。

报告经理:持续时间 = 1885

Visual Studio:持续时间 = 327946(长 173 倍!)

一般来说,即使没有用于组的表达式,从 Visual Studio 中执行查询的速度也会变慢。 在 SQL Server 2008 R2 和 SQL Server 2012 中尝试此操作时,我遇到了相同的行为。

之前有没有其他人遇到过这种行为并找到了合适的解决方法?

重现步骤:

使用 AdventureWorksDW2008 数据库在 Visual Studio 2008 中使用以下查询作为数据集创建矩阵报表:

SELECT
PC.EnglishProductCategoryName AS Category
,PSC.EnglishProductSubcategoryName AS Subcategory
,P.EnglishProductName AS ProductName
,G.EnglishCountryRegionName AS Country
,G.StateProvinceName AS State
,FIS.SalesAmount
FROM        dbo.FactInternetSales FIS
INNER JOIN dbo.DimProduct P
ON FIS.ProductKey = P.ProductKey
INNER JOIN dbo.DimProductSubcategory PSC
ON P.ProductSubcategoryKey = PSC.ProductSubcategoryKey
INNER JOIN dbo.DimProductCategory PC
ON PSC.ProductCategoryKey = PC.ProductCategoryKey
INNER JOIN dbo.DimCustomer C
ON FIS.CustomerKey = C.CustomerKey
INNER JOIN dbo.DimGeography G
ON C.GeographyKey = G.GeographyKey

使用可用值 Category、Subcategory、ProductName 创建 2 个参数 RowGroupParam 和 ColumnGroupParam。

使用表达式 =Fields(Parameters!RowGroupParam.Value).Value 创建行组,使用表达式 =Fields(Parameters!ColumnGroupParam.Value).Value 创建列组。对行组和列组的文本框值使用相同的表达式。

使用 SalesAmount 作为详细信息文本框。

运行报表,为行组参数选择类别,为列组类别选择子类别。等待 30 秒以生成报告。

将相同的报表部署到报表服务器并使用相同的参数运行报表。报告将在几秒钟内生成。

【问题讨论】:

    标签: sql sql-server sql-server-2008 visual-studio-2008 reporting-services


    【解决方案1】:

    我不能给你一个 100% 的答案,只是我的经验。 当报表服务构建自己的内部记录集时,它会获取所有数据并创建一个新的虚拟记录集(表)。正如您所提到的,这比直接从 sql 查询执行要慢。 所以我要做什么来防止这种情况:始终构建查询并将它们存储在 ms sql 中以在那里执行所有工作。 在报告本身中,我只访问查询的结果。

    例如SELECT * FROM qry_verycomplicatedquery 作为查询存储在 ms sql 中。

    也许其他人知道更好的方法,但无论如何,这种方法更容易处理,以便使用相同的数据源管理大量报告。

    【讨论】:

    • 感谢您的建议。我刚刚尝试过使用视图和存储过程,但我从 VS2008 得到了同样缓慢的响应。
    猜你喜欢
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多