Reporting services SSRS导出到Excel会导致(500)服务器错误

Reporting services SSRS导出到Excel会导致(500)服务器错误,reporting-services,ssrs-2012,Reporting Services,Ssrs 2012,我有一份SSRS报告(SSRS 2012),当我尝试导出到Excel时,总是在大约一分钟后崩溃,出现500服务器错误 报告本身运行成功。我可以成功地将结果导出到CSV,实际上在报告本身呈现后只需几秒钟 我在超过20000条记录的结果集上体验到了这一点;我当前的示例有36000条记录-它使Excel导出崩溃,但CSV导出成功 我已尝试检查SSRS日志(C:\Program Files\Microsoft SQL Server\MSRS11.SQL2012\Reporting Services\Lo

我有一份SSRS报告(SSRS 2012),当我尝试导出到Excel时,总是在大约一分钟后崩溃,出现500服务器错误

报告本身运行成功。我可以成功地将结果导出到CSV,实际上在报告本身呈现后只需几秒钟

我在超过20000条记录的结果集上体验到了这一点;我当前的示例有36000条记录-它使Excel导出崩溃,但CSV导出成功

我已尝试检查SSRS日志(
C:\Program Files\Microsoft SQL Server\MSRS11.SQL2012\Reporting Services\LogFiles
),其中未显示任何错误,只有指向我的报告的
RenderForNewSession
RenderFromSession
的几个条目

事件查看器应用程序日志显示ASP.NET 2.0的警告条目:


例外信息:
异常类型:COMException
异常消息:此网络连接不存在。(来自HRESULT的异常:0x800708CA)

还有其他地方可以找到有用的调试信息吗?如果不需要的话,我真的不想指导客户“不要将大型报告导出到Excel,而是使用CSV”。或者从SSRS web报表查看器导出到Excel时是否存在任何已知问题或怪癖

编辑:

经过进一步的挖掘,我发现了更多的信息,但还没有找到一个实际的解决方案。我确实在日志中找到了可以提高调试级别的地方-在
reportingserviceservice.exe.config
文件中,有两个设置,
DefaultTraceSwitch
Components
位于
RSTrace
标记下面。它们的默认值为
3
,但将每个值都跳到
4
会提供详细的日志输出

这很有趣,但除了确认客户端执行似乎超时之外,我并没有指出任何新的内容

接下来我遇到了一个问题。据我所知,Excel导出渲染器似乎在某个地方遇到了执行超时,但所有SSRS设置似乎都为运行任何东西提供了足够的空间


web.config
httpRuntime
executionTimeout
设置是否应覆盖machine.config设置?
TechNet文章暗示machine.config设置似乎与导出时看到的超时一致,但是ReportServer web.config的
executionTimeout
设置比ASP.NET默认设置大得多

您的一个想法是,数据的输出有Excel无法处理的东西,但csv可以。所以数据中的换行符或者沿着这些行的东西

如果可能,将结果限制为仅返回一行,会发生什么情况?没有返回行吗?然后它会输出Excel吗

另外,我知道从SSRS可以将数据输出到新的选项卡上,您是否正在使用该功能,或者选项卡已经用完了


您的一个想法是,数据的输出有Excel无法处理的东西,但csv可以。所以数据中的换行符或者沿着这些行的东西

如果可能,将结果限制为仅返回一行,会发生什么情况?没有返回行吗?然后它会输出Excel吗

另外,我知道从SSRS可以将数据输出到新的选项卡上,您是否正在使用该功能,或者选项卡已经用完了


不确定这是否是同一个问题,但我在导出到Excel时遇到了问题,因为单元格中的字符太多。如果只遇到一个超过32745个字符的单元格,则整个导出将崩溃

我不得不开始在文本框中添加截断代码,以便在导出到Excel时截断单元格文本,这对我来说解决了这个问题——虽然这并不总是一个可行的选择,所以只是一个建议

IIf(Globals!RenderFormat.Name= "EXCELOPENXML" OR Globals!RenderFormat.Name = "EXCEL",
          Left(Join(Fields!FieldA.Value, chr(10)),32745) + "...Truncated for Excel",
Join(Fields!FieldA.Value, chr(10) ))

另外,这里有一个链接显示了从Reporting Services导出到Excel的一些限制:

不确定这是否是同一个问题,但我在导出到Excel时遇到了问题,因为单元格中的字符太多。如果只遇到一个超过32745个字符的单元格,则整个导出将崩溃

我不得不开始在文本框中添加截断代码,以便在导出到Excel时截断单元格文本,这对我来说解决了这个问题——虽然这并不总是一个可行的选择,所以只是一个建议

IIf(Globals!RenderFormat.Name= "EXCELOPENXML" OR Globals!RenderFormat.Name = "EXCEL",
          Left(Join(Fields!FieldA.Value, chr(10)),32745) + "...Truncated for Excel",
Join(Fields!FieldA.Value, chr(10) ))

另外,这里有一个链接显示了从Reporting Services导出到Excel的一些限制:

各种想法的融合,但这在SSRS 2008r2中通常是一个问题

对于SSRS2012,有两种excel导出格式

Version of SSRS      Render format name to use
2008 R2              EXCEL
2012                 EXCELOPENXML
您是否可能正在打开2008r2版本?(行数限制为65K)。如果是这样,您可以在服务器上的ssrs配置中关闭此选项(但将在所有报告中关闭)


对于36K行,即使在EXCEL(2008r2)导出中,也不应该出现此问题,但是否有可能为每个结果输出2行?

一个想法的集合,但这在SSRS 2008r2中通常是一个问题

对于SSRS2012,有两种excel导出格式

Version of SSRS      Render format name to use
2008 R2              EXCEL
2012                 EXCELOPENXML
您是否可能正在打开2008r2版本?(行数限制为65K)。如果是这样,您可以在服务器上的ssrs配置中关闭此选项(但将在所有报告中关闭)


对于36K行,即使在EXCEL(2008r2)导出中,也不应该出现此问题,但是否有可能为每个结果输出2行?

谢谢提示。它没有做任何有趣的标签,它实际上只是一个直接的数据转储。关于坏数据的有趣想法-我将看看是否可以限制某些行。不过,这似乎确实与数据量有关——它发生在多个不同的报告上,都在大约20000行左右的某个点上。感谢您的提示。它在标签上没有做任何有趣的事情,