SSRS报告内容空白

时间:2013-04-26 14:38:42

标签: ssrs-2008 reporting-services

我在使用Sql Server Reporting Services(SSRS)2008 R2运行报表时遇到问题。

设置网站,创建一些用户并上传一些报告后,我选择要运行的报告,输入我的参数,然后等待报告呈现......但没有任何反应。我看到“加载”动画很短的时间(不论报告如何都会在1到10秒之间变化),但很快就会消失,除了页面顶部的参数外什么都没有。根本不会呈现任何报告内容。

这发生在我部署到SSRS实例的每个报表上,无论大小,参数数量等等。大多数报表大约有八个类似类型的参数,它们的布局都是相对表格格式:有几个“部分”,每个部分包含一个可能具有分组和/或重复行的表。平均而言,每个表包含大约六个字段。支持报表数据集的查询并不是非常重要的:在大多数情况下,我可以在半分钟内针对SQL运行它们。

我已在以下问题中检查并实施了解决方案,但均未纠正此问题。

(与Safari / Chrome相关) SSRS 2008 R2 - SSRS 2012 - ReportViewer: Reports are blank in Safari and Chrome

(与以管理员身份运行浏览器相关) SSRS 2008 - Reporting Services Webpage is Blank except for headers

我考虑过的其他选项包括直接从计算机运行报告,而不是通过远程桌面运行报告,以及从网络上的其他计算机运行报告,而不是托管它们的服务器。这两种选择都没有取得一致的成功。

然而,我所确定的是,此问题与传递给报告的参数数量直接相关。例如,我的大多数报告都有超过六个或七个多选参数;它们中的每一个都在运行时从数据库填充。如果用户执行“全选”或在参数选择中选择大量选项,则会出现上述问题。但是,如果用户特定于其参数并且仅选择少数,则报告将正确呈现。

这种情况进一​​步复杂化的是,它遭受了“我的机器上工作”综合症。它发生在某些环境中,但不会发生在其他环境中。

如上所述,我可以通过限制所选参数值的数量来运行报告;这适用于每个环境。然而,我很好奇为什么会发生这种情况(可能是内部SSRS限制?),以及我将来可以做些什么来始终如一地避免它。

4 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,按照 Alex Zakharov 的建议,我发现一个参数大约有700行,默认选中它们。取消选择几行立即解决了我的问题,但这对于生产版本来说并不令人满意。

查找 lrb \Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\LogFiles\)建议的日志文件,我发现以下错误消息:

ERROR: HTTP status code --> 500
-------Details--------
System.Web.HttpException: The URL-encoded form data is not valid. ---> 
System.InvalidOperationException: Operation is not valid due to the current state of the object.
at System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded()

解决方案

这导致我this answer找到并更新web.configs,在下面添加代码行,然后重新启动服务。

<appSettings>
    <!-- default is 1000 -->
    <add key="aspnet:MaxHttpCollectionKeys" value="2000" />
</appSettings>

我必须在2个地方更新,因为SSRS为报表管理器和报表服务器提供了单独的网站: \Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\web.config

\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportManager\web.config

答案 1 :(得分:0)

  

参数没有内部限制!

第一个建议: 如果表返回“无值”,则可以轻松调试,显示标签


我使用SQL查询中参数的更正查询语法解决了同样的问题:

...
WHERE t.FieldName = ISNULL (@parameter, t.FieldName)
AND t.FieldName2 = ISNULL (@parameter2, t.FieldName2)
...

答案 2 :(得分:0)

我遇到了同样的问题,下拉多选参数带有可能值的长列表(&gt; 100)。检查您的情况并调查哪个参数会破坏报告。

答案 3 :(得分:0)

建议

我也想分享我对这个问题的解决方案。经过这么多的努力和如此多的尝试,我的问题更多的是在前端,有一段代码,我错过了返回空白页,但服务器报告运行良好。

使用Angular从Web API返回HttpResponseMessage,最初这是我的调用方式:

$http.get(url + 'Report/getUsersReport?CustomerId=' + searchCriteria.customerId + '&fromDate=' + searchCriteria.fromDate + '&toDate=' + searchCriteria.toDate).then(getContractsForBackOfficeReportComplete, function (err, status) {defered.reject(err);});

并添加此行代码{ responseType: 'arraybuffer' })后:

$http.get(url + 'Report/getUsersReport?CustomerId=' + searchCriteria.customerId + '&fromDate=' + earchCriteria.fromDate + '&toDate=' + searchCriteria.toDate, { responseType: 'arraybuffer' })(getUsersReportBackOffice, function (err, status) {
defered.reject(err);});