从SSRS报告导入Power Pivot时,"xxx行,第36列:非法xml字符的XML解析失败"

3N1*_*GM4 8 excel reporting-services powerpivot ssrs-2014 excel-2016

Excel 2016(16.0.6965.2076)

SQL Server 2014(12.0.4213.0)

我有一个包含10个参数的SSRS报告 - 其中两个是日期,另外8个是使用查询填充选项的文本下拉列表.如果我尝试将此报告提取到Excel中的Power Pivot数据模型(Power Pivot - > Manage - > From Other Sources - > Report),则在完成表导入向导时(成功指定报告和参数值并查看报告后)通过单击"选择表和视图"页面上的"完成"按钮,在向导中正确呈现我收到错误消息:

XML解析在第1345行第36列失败:非法的xml字符.

给出的行取决于我为报告指定的参数值,但列始终为36.我检查了我的报告,这些行号和列号似乎与我的报告无关,因为它们通常都大于报告中返回的总行数/列数.

我在网上查了一下,发现了一些处理这个问题的资源,但我一直无法找到解决问题的方法:

博客和关联的Microsoft Connect故障单建议我可以通过将报表导出为数据馈送并在Power Pivot向导中引用它来实现此功能,但这对我来说也不起作用,我得到了不同的错误:

无法获取数据Feed"[报告Feed名称]"的架构.请确保此Feed存在.

我在网上其他地方发现了这个后续错误(或原始问题)可能是由于报告URL太长(包括参数/值).不幸的是我看不到任何进一步的方法来减少URL长度(当前超过700个字符),因为我已经最小化了我的参数名称和报告名称,但仍然有这个问题(我不相信我可以减少参数值,因为它们是从我们无法更改的应用程序数据库中获取).

我也看到了用"指定值"参数替换我的"从查询中获取值"参数的建议,但这不可行,因为参数值必须从上面提到的应用程序数据库中获取并且会随着时间的推移而变化,因此需要被动态获取.

任何人都可以建议我可以为此问题采取解决方案或进一步的故障排除步骤

Mik*_*ney 4

为了缩小您的问题范围,我会将报告(使用您的参数)导出为 XML 格式。这实际上是 Power Pivot 调用您的报告时正在执行的操作的手动重现。

然后我会在 XML 编辑器(例如 Visual Studio)中打开该文件并查找“第 1345 行,第 36 列:非法 xml 字符。”。

如果这是由文本框名称触发的,您可以通过设置 DataElementName 属性来覆盖它们以进行 XML 导出。

如果它是由数据值触发的,我会使用 SSRS 表达式来尝试避免它。您可以测试Globals!RenderFormat.Name = "XML"仅在该场景下操作数据值。