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

时间:2015-07-13 22:21:56

标签: sql-server ssms sql-server-2014 ssms-2014

我找到了解决这个问题的各种解决方案,但它们似乎没有用。我有一个查询返回一个结果,其中包含大约6个嵌套行。粗糙的形状是:

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

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

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

unclosed literal

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

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

编辑:我通过节点运行查询,而我正在使用FOR XML AUTO, TYPE进行的整形显然已经过时了。结果文档是35MB。但是如果我在没有整形的情况下运行查询,我会获得9行结果集。仍然:即使直接输出到文件,我也无法用SSMS解决这个问题。

1 个答案:

答案 0 :(得分:0)

已经过了一个月,我对此并没有多大帮助。我真正的解决方案是不使用FOR XML AUTO, TYPE。不是因为它被打破了,而是因为它太容易搞砸并导致长时间的神秘调试。最好手动塑造XML(在我的情况下是Node),除非你真的需要了解如何在SQL中构建XML。如果你好奇我为什么这么做,请阅读上面的评论。