0

我正在调试我们组织中的现有存储过程。它试图返回一个 2047 字节长的 XML 字符串(使用“for XML auto”)。

当我在 SSMS 中运行存储过程时,返回值出现在结果窗口中。如果我单击该值(显示为超链接),则会打开一个新窗口并显示整个字符串。(顺便说一句,字符串是一个 XML 元素,所有数据都包含在属性中。不是我的设计,但这就是我正在使用的。)

但是,如果我在结果窗格中查看结果(通过拖出列的宽度),那么最后几个字节将被截断。我只看到 2034 个字符。

因为它只有 2034 个字符,所以它不是 SSMS 结果窗口的限制(默认为 2MB,现在设置为无限制)。这是发送到调用此存储过程的服务的完全相同的字符串(通过 ADO.NET 和 ExecuteScalar)。

为什么存储过程会截断 XML?

谢谢,杰

4

1 回答 1

2

一位同事发现了这篇 Microsoft KB 文章,标题为The XML data row is truncated at 2,033 characters when you use the SqlDataReader object which provides the solution (use ExecuteXmlReaderinstead):

于 2013-11-04T19:17:44.490 回答