如何从 SSMS 获得超过 256 个字符的 FOR XML AUTO 结果?

How do I get a FOR XML AUTO result to be more than 256 characters from SSMS?

我找到了解决此问题的各种方法,但它们似乎都不起作用。我有一个查询 return 是一个结果,其中有大约 6 个嵌套行。粗略的形状是:

<ItemGroup> 
  <Item />
  <Item />
  <Item />
  <Item />
</ItemGroup> 

每个项目中大约有 8 个元素。我正在使用 FOR XML AUTO,TYPE 来生成 XML。查询有一个 nested query in it to produce the inner rows。到目前为止,一切都很好。但是,当我 运行 查询时,我的 XML 总是 被修剪为 256 个字符。解决此问题的第一个建议是在 工具、选项、查询结果中将 XML 数据更改为无限制(或 5MB,它们都应该足够)以使其最大 return 大小, SQL 服务器,结果到网格,XML 数据。 似乎很明智。没用。

如果我输出到网格,我会收到有关未闭合字符串的错误消息:

我的下一次修复尝试只是将结果输出到文件中。我没有看到任何将数据量(最大)更改为 return 的选项,所以我认为它是无限的。但是,将结果转储到文件会导致完全相同的问题:结果文本中有 1 行 x 256 列。

这可以修复吗?这是 SSMS 2014 中的错误吗?确切的版本是 12.0.2000.8。我的下一步是将结果行发送到 node.js 脚本并在那里操纵 XML。

编辑:我运行通过节点的查询和我用FOR XML AUTO, TYPE做的整形显然是搞砸了。结果文档为 35MB。但是,如果我 运行 没有整形的查询,我会得到一个 9 行的结果集。仍然:即使直接输出到文件,我也无法使用 SSMS 解决这个问题。

已经一个月了,我对此没有太大的解决方案。我真正的解决方案是不使用 FOR XML AUTO, TYPE。不是因为它坏了,而是因为它太容易出错并导致长时间的神秘调试周期。最好手动塑造 XML(在我的例子中是 Node),除非你真的真的需要了解如何在 SQL 中塑造 XML。如果您对我为什么这样做感到好奇,请阅读上面的评论。