8

Excel 2016 (16.0.6965.2076)

SQL Server 2014 (12.0.4213.0)

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

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

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

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

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

无法获取数据馈送“[报告馈送名称]”的架构。请确保此 Feed 存在。

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

我还看到了将我的“从查询中获取值”参数替换为“指定值”参数的建议,但这不可行,因为参数值必须从上面提到的应用程序数据库中获取并且会随着时间而改变,所以需要动态获取。

谁能建议我可以针对此问题采取的解决方案或进一步的故障排除步骤?

4

3 回答 3

3

为了缩小您的问题,我会将报告(使用您的参数)导出为 XML 格式。这实际上是 Power Pivot 在调用您的报告时所做的手动复制。

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

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

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

于 2017-02-06T05:49:29.900 回答
0

我建议的第一项调查是尝试排除 URL 问题作为潜在原因。仅出于测试目的,是否可以复制报告并对其进行修改,以便使用有效示例对大多数参数进行硬编码?然后,您可以尝试仅使用一个或两个参数,使用更小的 URL 获取报告。

如果复制的报告有效,确认 URL 长度是问题所在,那么您别无选择,只能进一步研究减少 URL 长度的可能性。

如果 URL 长度是问题,您可以逐步添加参数以确定正确运行的目标 URL 长度。

是否可以减少输入参数的长度?如果参数需要匹配不能轻易修改的数据或代码的值,是否可以修改报告以合并查找表,以便将传入的短变量映射到其完整版本?

或者,您是否有几个文本参数只有 2 或 3 个选项?或者,是否有少数参数仅在特定组合中有效?如果是这样,它为您提供了另一种选择,尽管这是非常糟糕的做法,并且如果需要更改任何内容,您将需要花费大量精力来维护报告......您可以创建报告的多个副本,硬编码具有有限的参数有效组合的数量。然后,根据 Excel 中存储的输入参数,调用与这些参数匹配的相关报表,并传递 URL 中的其余参数。

但是,如果 URL 长度不是问题,那么您可以投入更多精力来调查原因并希望得到更清洁的解决方案!

于 2017-02-06T01:52:19.393 回答
0

这就是我所做的。

用于=TRIM(CLEAN( CELLS ))整个数据,替换并上传。

它接受了。

于 2020-03-11T08:12:59.130 回答