SSRS预览时出现错误:“缓冲XML内容所需的大小超过了缓冲配额”,这会隐藏原始错误。

15

我知道我的报告肯定有问题(例如列不匹配),需要进行更正,但是我看到的是WCF错误消息,它隐藏了实际的问题,这种隐藏使我比原始问题更加烦恼:列不匹配。

我想我们需要调整WCF“缓冲区大小”,然后就可以得到原始问题消息。但配置文件在哪里? 在C:\Program Files (x86)\Microsoft Visual Studio 10.0中搜索“system.serviceModel”并没有带来好的想法...

P.S.由于这只是报告预览,我不认为这是SSRS配置问题。问题可能出现在DevStudio进程或DevStudio的内部Web服务器进程中...

P.P.S请帮助我改善这个问题。我发现回答者不理解我需要什么样的帮助。


我认为你的.rdl文件存在问题。这个问题通常可以通过调试报告所做的更改来解决。你是将旧版本创建的报告复制粘贴到了新版本的标记中吗? - Ross Bush
1
@lrb,有两个问题 - 一个是我的报告错误,另一个是VS内部配置的问题(内部WCF客户端无法从内部Web服务器获取实际的错误消息,因为消息太大)。我希望通过社区的帮助来解决第二个问题。 - Roman Pokrovskij
1
嗨,我认为关于缓冲区大小的错误来自于SSRS,并通过您的WCF服务正确返回。您的WCF服务从SSRS正确返回了错误。如果在您的WCF服务中配置的缓冲区大小过小,您将会收到通道错误或其他错误提示。 - Ross Bush
1
Roman Pokrovskij - “xml缓冲区大小”是一个误导。通过WCF服务返回的错误是从其自身调用SSRS返回的错误。 WCF服务将正确的错误传递回客户端,但“xml缓冲区大小”是SSRS错误,而不是WCF服务绑定错误。更令人困惑的是,SSRS的“xml缓冲区大小”错误本身就是一个误导,而不是.rdl处理中错误的真正原因。 - Ross Bush
@lrb - 感谢您的想法。这解释了很多,但还有两个疑问。首先:我记得即使使用“VS for Reports”预览功能,我也能看到此错误,而且据我所知,“VS for reports preview”不使用SSRS(但我可能会在每个步骤中都感到困惑)。其次:即使它在SSRS方面出现WCF错误(并且已知有这样的服务-客户端可以加载rdl,甚至更多:我可以通过玩弄客户端/服务器配置来模拟此错误!),这仍然是WCF错误。所有这些都意味着需要调整某个需要调整的配置。 - Roman Pokrovskij
显示剩余4条评论
14个回答

26

我在SSRS预览中遇到了多个这种bug的"变体"。 似乎预览模式的渲染器非常脆弱。

有一种简单的方法来解决这个问题。忽略错误并尝试将RDL文件上传到您的报表服务器上。上传程序会高兴地告诉您文件出了什么问题——它会告诉您哪个字段有问题,以及问题所在。如果有多个错误,您会得到每个字段和与其相关的错误。

我可以使用以下任何一种方法创建此虚假的XML缓冲区错误:

  • 添加一个新的Tablix,开始将其连接到数据集,然后取消操作。
  • 从具有负右缩进(右列端超出页面边缘)的MS Word文档中复制/粘贴一些文本到文本框中。
  • 连接具有varchar(8000)返回值的数据集。

这个答案很棒。当我通过ssrs管理器上传时,我遇到了一个带有更多细节的rsxxx错误..."自定义代码的第39行出现错误:[BC30198] 需要')'。(rsCompilerErrorInCode) 获取在线帮助" - Ross Bush
1
对我有用!只是澄清一下 - 从SSRS VS部署报告没有起作用。我必须使用Report Manager网页上传它。 - dvdhns
我尝试部署,但在Visual Studio的错误列表屏幕上出现了一个关于/ReportName的错误。这是一个完全虚假的错误描述,一开始毫无头绪,但最终我发现我有一个编码表达式用于列的可见性,它引用了已删除的列。所以我能够修复它。 - Glen

15

1
我想要的是配置底层的WCF服务以显示原始错误信息。 - Roman Pokrovskij
1
我和Prashant遇到了同样的问题,它来自于一个控制行可见性的表达式,该表达式引用了查询结果中不再存在的字段。 - Daniel Cotter

2
今天我又遇到了这个错误。
我创建了一个表来存储数据,以替代两个较慢的查询。我更改了一些名称以清理流程。
我认为这个错误实际上意味着我的报告有很多问题,各种错误信息的缓冲区不够大,导致出现错误信息。

所需缓冲 XML 内容的大小超过了缓冲配额

当然,这应该是一个简单的修复,但微软已经表示他们不会修复它。

https://connect.microsoft.com/SQLServer/feedback/details/742913/ssdt-reporting-services-designer-error


2

当我通过点击“刷新字段”向现有数据集添加新字段时,我遇到了这个错误。数据集来源是存储过程。结果只有少数原始字段显示在数据集字段列表中,而没有新字段。如果我尝试预览报告,就会出现XML缓冲区错误。

解决方法是不要刷新字段,而是点击“添加新字段”,并将新字段名称输入到数据集属性字段中的最后一个位置。

之后就可以正常运行了。


1
谢谢,但问题是如何获取原始错误消息,而不是隐藏初始问题的WCF错误消息。 - Roman Pokrovskij
感谢 jjm!您描述了我遇到的确切问题并提出了解决方法。非常感谢! - adam83

1

编辑:我根据解决问题的方法更新了我的答案。

在更改多个存储过程并更新SSRS报告中的数据集名称后,我目前遇到了这个问题。

当我尝试运行预览时,我收到了完全相同的错误。

事实证明,在调查问题后,问题是我已更改了数据集的名称属性。

enter image description here

在我的报告中,有几个公式或表达式使用我重命名的数据集的旧名称属性。在将数据集名称恢复后,我成功获得了真正的错误,例如缺少字段等。将数据集名称属性设置回原来的值后,实际错误重新出现。
我只将名称属性更改回原来的样子,存储过程名称正确地引用了我的已重命名存储过程。

0

在一个工作报告中,当我尝试添加一列时,它给了我这个错误。我使用notepad++编辑了.rdl文件。在SSRS提示从磁盘重新加载更改后,它可以正常工作,没有问题。


0
我将我的自定义代码复制到Visual Studio中以便更好地突出显示代码以提高可读性,但是在此之后我遇到了这个错误。嗯,Visual Studio在文件的开头和结尾添加了类定义。编辑代码后,我将其粘贴回报告的自定义代码,然后就出现了这个错误。解决方法只是从自定义代码中删除类定义(Public Class Class1和End Class)。因此,如果有,请检查您的自定义代码。

0
可能的根本原因
  1. 参数名称不正确(大小写/顺序)
  2. 访问不存在的属性。
    等等...
解决方案:获取确切的错误消息:
  1. 部署 SSRS 报告并查找错误:已由 "Kim Crosser" 建议
  2. 暂时删除您认为没有错误的部分(SSRS/报告内容),以释放缓冲区中的空间,以便您可以获得实际的错误消息。稍后将部分添加回之前删除的页面。

0

我曾经遇到过同样的错误信息,而且完全是由我的操作引起的。这有点尴尬,但如果能帮助别人解决问题那就太好了!我不小心复制了包含一个小子查询语句的数据集查询,用于检查参数/变量值。


0

我之前将一个文本框绑定到

Fields!FieldName

并使用以下方法进行了修复:

Fields!FieldName.Value

话虽如此,加上其他已发布的答案,这个错误会以不同的方式出现。我遇到的问题在包含字段属性“值”之后得到了修复。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接