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.我检查了我的报告,这些行号和列号似乎与我的报告无关,因为它们通常都是大于报告中返回的行/列总数。
我在网上浏览过并找到了一些处理此问题的资源,但我一直无法找到解决问题的方法:
This博客和this关联的Microsoft Connect故障单建议我可以通过将报表导出为数据馈送并在Power Pivot向导中引用它来实现此功能,但这也不是#39;为我工作,我得到一个不同的错误:
无法获取数据Feed' [报告Feed名称]'的架构。请确保此Feed已存在。
我在网上其他地方发现了这个后续错误(或原始问题)可能是由于报告网址太长(包括参数/值)造成的。不幸的是我看不到任何进一步的方法来减少URL长度(目前超过700个字符),因为我已经最小化了我的参数名称和报告名称,但仍然有这个问题(我不相信我可以减少参数值,因为它们是从我们无法更改的应用程序数据库中获取。)
我也看到了一些建议来替换我的"从查询中获取值"参数用"指定值"参数,但这不可行,因为参数值必须从上面提到的应用程序数据库中获取并且会随着时间的推移而变化,因此需要动态获取。
有人可以建议我可以针对此问题采取解决方案或进一步的故障排除步骤吗?
答案 0 :(得分:3)
为了缩小您的问题范围,我会将报告(使用您的参数)导出为XML格式。这实际上是Power Pivot在调用您的报告时正在进行的手动复制。
然后我会在XML编辑器(例如Visual Studio)中打开该文件并搜索“第1345行,第36列:非法的xml字符。”。
如果这是由文本框名称触发的,则可以通过设置DataElementName属性来覆盖它们以进行XML导出。
如果它是由数据值触发的,我会使用SSRS表达式来试图避免它。您可以测试Globals!RenderFormat.Name = "XML"
以仅操作该方案下的数据值。
答案 1 :(得分:0)
我建议的第一个调查是试图排除URL问题作为潜在原因。仅出于测试目的,是否可以复制报告并对其进行修改,以便大多数参数都使用有效示例进行硬编码?然后,您可以尝试使用更小的URL获取报告,只使用一个或两个参数。
如果复制的报告有效,确认URL长度是问题,那么除了调查进一步减少URL长度的可能性之外别无选择。
如果URL长度是问题,您可以增量添加参数以确定正确运行的目标URL长度。
是否可以减少输入参数的长度?如果参数需要匹配无法轻易修改的数据或代码值,是否可以修改报表以包含查找表,以便将传入的短变量映射到其完整版本?
或者,你有几个只有2或3个选项的文本参数吗?或者,是否有少数参数仅在特定组合中有效?如果是这样,它会为您提供另一种选择,虽然这是非常糟糕的做法,如果需要更改,将导致维护报告的大量工作...您可以创建报告的多个副本,硬编码有限的参数有效组合的数量。然后,根据存储在Excel中的输入参数,调用与这些参数匹配的相关报告,并传递URL中的其余参数。
但是,如果URL长度不是问题,那么您可以投入更多精力来调查原因并希望更清洁的解决方案!
答案 2 :(得分:0)
这就是我所做的。
在整个数据上使用=TRIM(CLEAN( CELLS ))
,替换并上传。
接受了。