【发布时间】: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