繁体   English   中英

在组中使用表达式时,Visual Studio 2008中的SSRS 2008预览缓慢

[英]SSRS 2008 slow preview in Visual Studio 2008 when using expressions in groups

在Visual Studio 2008中使用以下表达式创建矩阵报表时,预览所花费的时间比应该花的时间长得多。

= Fields(Parameters!ColumnGroupParam.Value).Value

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

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

报表管理员:工期= 1885

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

通常,即使没有用于组的表达式,从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

创建2个参数RowGroupParam和ColumnGroupParam,它们均具有可用值Category,Subcategory,ProductName。

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

将SalesAmount用于详细信息文本框。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM