Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ReportViewer控件停止加载_C#_Asp.net_Reporting Services_Ssas_Reportviewer - Fatal编程技术网

C# ReportViewer控件停止加载

C# ReportViewer控件停止加载,c#,asp.net,reporting-services,ssas,reportviewer,C#,Asp.net,Reporting Services,Ssas,Reportviewer,我有一个报表查看器控件,如下所示: <rsweb:ReportViewer ID="ReportViewer1" style="margin-bottom:78px;" runat="server" AsyncRendering="true" SizeToReportContent="true" Width="100%" Height="100%" KeepSessionAlive="true"></rsweb:ReportViewer> 问题是报表查看器开始正常加

我有一个报表查看器控件,如下所示:

<rsweb:ReportViewer ID="ReportViewer1" style="margin-bottom:78px;" runat="server"
 AsyncRendering="true" SizeToReportContent="true" Width="100%" Height="100%"
 KeepSessionAlive="true"></rsweb:ReportViewer>
问题是报表查看器开始正常加载,并在大约一分钟后随机停止。现在,有很多数据正在从OLAP多维数据集中检索(大约100000行),报告中的数据正试图加载。它与SSRS中的展开/折叠功能分组。当我从报告中筛选数据时,它会正常加载。报表也会在Visual Studio 2012中以及ReportManager上正常加载(需要几分钟,但会加载)

所以我的问题是:这对ReportViewer控件来说是太多了,还是我遗漏了什么?

编辑:

之所以将其分组到SSR中,是因为我绝对不是MDX方面的专家。我使用的MDX查询是由SSR自动生成的查询。生成了MDX查询(更改了列、维度和度量值的名称):

它是按

[Dimension1].[Value1].[Value1]
而且

[Dimension2].[Value2].[Value2]
在SSR中


提前感谢。

您可能在ASP中遇到超时:

事实上,我自己也在处理类似的问题。我找到的唯一真正的解决方案(除了上述链接,并因此等待报告提交)是:

  • 非常密集的SQL/MDX性能调优:并不总是一个选项,因为有时数据集是最优的
  • 缓存报告:不总是一个选项,因为有些报告有太多可能的参数化可能性
  • 我将尝试使用reportserver reportviewer运行报告,并将报告的超时设置为0,以获取报告运行所需时间的基线

    然后,运行以下查询:

    use ReportServer
    
    SELECT els.UserName
     , c.Name Report
     , els.Parameters
     , els.Status
     , els.Format   
     ,els.TimeStart
     ,els.TimeEnd
     , CAST(FLOOR(DATEDIFF(SECOND,TimeStart, TimeEnd)/60.0) as varchar(100)) + ''' ' + CAST(ABS( 60 * FLOOR(DATEDIFF(SECOND,TimeStart, TimeEnd)/60.0)  -  DATEDIFF(SECOND,TimeStart, TimeEnd)) as varchar(100)) + '"' TotalTime
     ,CAST(FLOOR(TimeDataRetrieval/1000.0/60.0) as varchar(100))  + ''' ' + CAST(ABS(Floor(TimeDataRetrieval/1000.0/60.0)*60 - TimeDataRetrieval/1000) as varchar(100)) + '"' Data
     , CAST(FLOOR(TimeProcessing/1000.0/60.0) as varchar(100))  + ''' ' + CAST(ABS(Floor(TimeProcessing/1000.0/60.0)*60 - TimeProcessing/1000) as varchar(100)) + '"' Processing
     , CAST(FLOOR(TimeRendering/1000.0/60.0) as varchar(100))  + ''' ' + CAST(ABS(Floor(TimeRendering/1000.0/60.0)*60 - TimeRendering/1000) as varchar(100)) + '"' Rendering
     , els.[RowCount]
     , CAST(ROUND(CAST([RowCount] as decimal) / (CASE WHEN TimeDataRetrieval = 0.00 THEN NULL ELSE TimeDataRetrieval END /1000),2) as decimal(18,1))  RowsPerSecond
    FROM ExecutionLogStorage els
    LEFT JOIN Catalog c on c.ItemID = els.ReportID
    WHERE c.Name IN( '<<REPORT NAME>>') AND
    Format = 'RPL' AND
    Status ='rsSuccess' AND 
    1=1
    ORDER BY TimeEnd DESC
    
    使用ReportServer
    选择els.UserName
    ,c.姓名报告
    ,els.参数
    ,els.状态
    ,els.Format
    ,els.TimeStart
    ,els.TimeEnd
    ,CAST(FLOOR(DATEDIFF(SECOND,TimeStart,TimeEnd)/60.0)为varchar(100))+“”“”+CAST(ABS(60*FLOOR(DATEDIFF(SECOND,TimeStart,TimeEnd)/60.0)-DATEDIFF(SECOND,TimeStart,TimeEnd))为varchar(100))+“”“TotalTime”
    ,CAST(FLOOR(TimeDataRetrieval/1000.0/60.0)为varchar(100))+“”“”+CAST(ABS(FLOOR(TimeDataRetrieval/1000.0/60.0)*60-TimeDataRetrieval/1000)为varchar(100))+“””数据
    ,CAST(FLOOR(TimeProcessing/1000.0/60.0)为varchar(100))+“”“”+CAST(ABS(FLOOR(TimeProcessing/1000.0/60.0)*60-TimeProcessing/1000)为varchar(100))+“””处理
    ,CAST(FLOOR(TimeRendering/1000.0/60.0)作为varchar(100))+“”“+CAST(ABS(FLOOR(TimeRendering/1000.0/60.0)*60-TimeRendering/1000)作为varchar(100))+“””渲染
    ,els.[行计数]
    ,强制转换(四舍五入(强制转换([RowCount]为十进制)/(TimeDataRetrieval=0.00时为空,否则TimeDataRetrieval结束/1000),2)为十进制(18,1))行秒
    从ExecutionLogels存储
    c.ItemID=els.ReportID上的左联接目录c
    其中c.名称在(“”)中,并且
    格式='RPL'和
    状态='rsSuccess'和
    1=1
    按时间结束描述订购
    
    看看你的报告在哪里花费的时间最多


    另外,您介意提供MDX查询吗?奇怪的是,您返回了10万行,然后将它们分组到SSR中。通常更好的做法是让MDX进行分组/聚合,并在计算出的度量值中进行计算,然后将其提供给报表。

    ReportViewer是否有类似分页的功能。。?是否可以重构为ReportViewer加载或返回数据的查询,以返回较小的记录集..?没有任何分页。报告的要求和布局要求所有数据都在那里,因为需要使用它进行一些计算。只是一个F.Y.I.它不显示100000行,因为它是分组的。由于分组的数据太多,因此可能会显示约20行。也许您需要实现使用ReportViewer的替代方法。。10万行对于一个报告浏览者来说听起来相当沉重,他亲自向你征求反馈意见。是的,我们正在讨论另一种选择。感谢您的快速回复。我用查询编辑了问题。查看您的查询,我不确定您是否在报告中使用了所有维度。报表tablix是按行和列分组的矩阵吗?我认为我们可以从您的查询中删除一些可能不需要的维度([Dimension2].[Value3].[Value3],[TimeDimension].[Value4].[Value4],[Dimension2].[Value5].[Value5]),并大幅缩短渲染时间。这是一个表格。对于要删除的列,我同意这将极大地提高性能,但它们需要进行报告所要求的一些计算。我们目前正在寻找一种替代方案,将这些计算包含在多维数据集本身中,因此不必将细节包含在报告中(这就是问题所在)。谢谢你的帮助,这确实是问题所在。SSAS的真正好处是它能够快速聚合和执行聚合计算。尝试在查询设计器中创建计算度量值,如果有问题,请在[SSAS]和[mdx]标记下发布后续信息。
    [Dimension2].[Value2].[Value2]
    
    use ReportServer
    
    SELECT els.UserName
     , c.Name Report
     , els.Parameters
     , els.Status
     , els.Format   
     ,els.TimeStart
     ,els.TimeEnd
     , CAST(FLOOR(DATEDIFF(SECOND,TimeStart, TimeEnd)/60.0) as varchar(100)) + ''' ' + CAST(ABS( 60 * FLOOR(DATEDIFF(SECOND,TimeStart, TimeEnd)/60.0)  -  DATEDIFF(SECOND,TimeStart, TimeEnd)) as varchar(100)) + '"' TotalTime
     ,CAST(FLOOR(TimeDataRetrieval/1000.0/60.0) as varchar(100))  + ''' ' + CAST(ABS(Floor(TimeDataRetrieval/1000.0/60.0)*60 - TimeDataRetrieval/1000) as varchar(100)) + '"' Data
     , CAST(FLOOR(TimeProcessing/1000.0/60.0) as varchar(100))  + ''' ' + CAST(ABS(Floor(TimeProcessing/1000.0/60.0)*60 - TimeProcessing/1000) as varchar(100)) + '"' Processing
     , CAST(FLOOR(TimeRendering/1000.0/60.0) as varchar(100))  + ''' ' + CAST(ABS(Floor(TimeRendering/1000.0/60.0)*60 - TimeRendering/1000) as varchar(100)) + '"' Rendering
     , els.[RowCount]
     , CAST(ROUND(CAST([RowCount] as decimal) / (CASE WHEN TimeDataRetrieval = 0.00 THEN NULL ELSE TimeDataRetrieval END /1000),2) as decimal(18,1))  RowsPerSecond
    FROM ExecutionLogStorage els
    LEFT JOIN Catalog c on c.ItemID = els.ReportID
    WHERE c.Name IN( '<<REPORT NAME>>') AND
    Format = 'RPL' AND
    Status ='rsSuccess' AND 
    1=1
    ORDER BY TimeEnd DESC