当从SSRS报告导入到Power Pivot时,“XML分析在第xxx行,第36列:非法xml字符失败”

Excel 2016(16.0.6965.2076)

SQL Server 2014(12.0.4213.0)

我有一个具有10个参数的SSRS报告 – 两个是date,其他8个是使用查询填充选项的文本下拉菜单。 如果我试图将此报表提取到Excel中的Power Pivot Data Model(Power Pivot – > Manage – > From Other Sources – > Report),则在完成表导入向导时(成功指定我的报表和参数值并查看报表在向导中正确显示)通过单击select表和视图页上的完成button我收到一条错误消息:

第1345行第36列的XMLparsing失败:非法的xml字符。

给定的行取决于我为报告指定的参数值,但列总是36。我检查了我的报告,这些行和列号似乎与我的报告没有关系,因为它们往往都大于报告中返回的总行数/列数。

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

这个博客和这个关联的Microsoft Connect票据表明,我可以通过导出我的报告作为数据馈送,并从Power Pivot向导中引用该报告,但是这也不适用于我,我得到了一个不同的错误:

无法获取数据馈送模式“[报告供稿名称]”。 请确保此提要存在。

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

我也看到了build议,用“指定值”参数replace我的“从查询中获取值”参数,但这是不可行的,因为参数值必须从上面提到的应用程序数据库中提取,并会随时间而改变,所以需要dynamic获取。

任何人都可以提出解决scheme或进一步的故障排除步骤,我可以按照这个问题?

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

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

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

如果它是由数据值触发的,我会使用SSRSexpression式来避免它。 您可以testingGlobals!RenderFormat.Name = "XML"以仅处理该场景下的数据值。

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

如果复制的报告起作用,确认URL长度是问题,那么您别无select,只能调查进一步减lessURL长度的可能性。

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

是否可以减lessinput参数的长度? 如果参数需要匹配不容易修改的数据或代码的值,是否可以修改报告以包含查找表,以便在短variables中传递映射到它们的完整版本?

或者,你有几个文本参数只有2或3个选项? 或者,是否只有在特定组合中才有效的参数? 如果是这样,它给了你另一个select,虽然这是非常糟糕的做法,并会导致很多努力来维护报告,如果有什么需要改变…你可以创build多份报告,硬编码有限的参数有效组合的数量。 然后,根据存储在Excel中的input参数,调用与这些参数相匹配的相关报表,并通过URL中的其余参数。

但是,如果URL长度不是问题,那么您可以花更多的精力来调查原因,并希望获得更清晰的解决scheme!