SSRS 报告,导出到 EXCEL 给出 rrRenderingError 错误 - 'MS.Utility.EventTrace'的类型初始值设定项引发异常



我正在运行SQL Server 2016,并运行本地报告服务。我可以很好地运行我的SSRS报告,并将它们显示在屏幕上。我也可以将它们导出为PDF或CSV,但如果我尝试导出为Word、PP或EXCEL,我会得到:

Reporting Services Error
An error occurred during rendering of the report. (rrRenderingError)
An error occurred during rendering of the report.
The type initializer for 'MS.Utility.EventTrace' threw an exception.
Requested registry access is not allowed.

同样的报告在办公室的其他人的机器上也能正常工作,所以我知道这与报告本身无关。我试过了其他人有没有遇到过这个问题,或者知道我该如何解决?

我刚刚花了几个小时在SSRS 2019的新安装中使用以前版本的更新数据库进行故障排除。

我使用的是一个权限较低的执行帐户,不想让它永久成为完整的本地管理员,但我尝试添加它,但没有成功。

我在报表服务配置管理器中删除了无人参与执行的帐户,并突然能够导出到XLSX。我不确定现有报告会有什么影响,所以我也对这个解决方案不满意。

在其他地方,我看到了使用进程监视器(procmon)来监视注册表项访问拒绝的建议,您可以在这里下载procmon。很难搜索所有输出,但您可以通过注册表项访问进行筛选,然后查找RS可执行文件或结果access DENIED。

在我的情况下,是HKU\%服务帐户sid%\Software\Microsoft\Avalon.Graphics,授予执行帐户(而不是运行服务的帐户)对此密钥的读取访问权限解决了问题。

我也遇到了同样的问题。检查URL(单击excel后)格式是否为EXCELOPENXML。如果是,则将其更改为EXCEL

然后它将下载并正常工作。

您可以通过更改报表服务下的"rsserverconfig"文件,将其默认启用为"EXCEL"。它将以"xls"格式下载,而不是以"xlsx"格式下载

注意:当呈现扩展由于部署配置或环境而无法工作时,此解决方案是一种常见的解决方案。

RSServerConfig
C:\Program Files\Microsoft SQL Server Reporting Services\SSRS\ReportServer\rsreportserver.config

查找Render部分,启用或禁用您希望用户可以访问的导出格式。有关各个扩展的详细信息,请参阅在SQLDocs上呈现扩展概述。

<Render>
<Extension Name="WORDOPENXML" Type="Microsoft.ReportingServices.Rendering.WordRenderer.WordOpenXmlRenderer.WordOpenXmlDocumentRenderer,Microsoft.ReportingServices.WordRendering"/>
<Extension Name="WORD" Type="Microsoft.ReportingServices.Rendering.WordRenderer.WordDocumentRenderer,Microsoft.ReportingServices.WordRendering" Visible="false"/>
<Extension Name="EXCELOPENXML" Type="Microsoft.ReportingServices.Rendering.ExcelOpenXmlRenderer.ExcelOpenXmlRenderer,Microsoft.ReportingServices.ExcelRendering" Visible="false"/>
<Extension Name="EXCEL" Type="Microsoft.ReportingServices.Rendering.ExcelRenderer.ExcelRenderer,Microsoft.ReportingServices.ExcelRendering" Visible="true"/>
…
<Render>

我在SSRS 2019中遇到了同样的问题,修复非常容易。

在报表服务器配置管理器中>服务帐户,我把它设置为";使用内置帐户"="虚拟服务帐户";。

我改成了";用户另一个帐户";,并选择属于管理员组的本地用户。

注意:这不是执行帐户。这是给服务帐户的。

我在干净安装Windows Server 2016&SQL 2016与所有SP的SSRS;CU和更新的窗口已应用。

为了确认我的修复,执行帐户不是SSRS服务器上本地管理员组的成员,一旦添加并停止/启动SSRS,我现在可以导出到Excel&Word,不是让它工作的最安全的方法,但比启用贬值的Excel 2003要好。

您可能会在Excel中出现此错误,因为Excel工作表中可以放入的最大行数为65536。如果数据的行数超过该行数,则会引发该错误。

我设置了一个新的报表服务器,遇到了同样的问题(这也会影响Power BI报表服务器),并根据上面的其他答案设法解决了这个问题,但由于我指定了特定的服务帐户,所以修复程序不起作用,因此无论使用哪个帐户作为运行报表服务器的服务帐户都应该起作用。

首先在服务器上打开报表服务器配置管理器,然后单击左侧的服务帐户。查看正在使用哪个帐户运行此操作。接下来转到执行帐户并查看在那里设置的帐户,因为执行帐户需要读取服务帐户的注册表项(这不是Windows中的通用"服务帐户")。

现在转到仍然在服务器上的注册表编辑器到此密钥(可以复制并粘贴在更新的Windows server版本上):

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList

逐个单击每个SID,然后查看ProfileImagePath以查找服务帐户的名称,这样您就可以知道它使用的是哪个SID。

现在转到以下位置:

ComputerHKEY_USERS[Service Account User SID As Shown in Report Server Configuration Manager]SoftwareMicrosoftAvalon.Graphics

将对文件夹的读取访问权限授予针对报表服务器配置管理器中的执行帐户设置的用户。

现在返回Reporting Services配置管理器,停止并启动服务,报告现在应该导出到Excel。

列出的替代解决方案,导出到较旧的.xls格式或删除执行帐户工作,然后不使用Avalon Graphics,但除非不需要执行帐户,否则上面的选项将是更好的选项。以提升用户身份运行服务也可以,但可能会增加更多风险。