【问题标题】:How do I get a FOR XML AUTO result to be more than 256 characters from SSMS?如何从 SSMS 获得超过 256 个字符的 FOR XML AUTO 结果?
【发布时间】:2015-07-13 22:21:55
【问题描述】:

我已经找到了解决这个问题的各种方法,但它们似乎都不起作用。我有一个查询,它返回一个包含大约 6 个嵌套行的结果。大致的形状是:

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

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

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

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

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

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

【问题讨论】:

  • 您是否在进行更改或至少打开一个新的查询窗口后尝试重新启动 SSMS?
  • 哇,看看结果(这不是改进,但显然是改变):imgur.com/1r3unTy
  • 这通常表明 SSMS 内存不足 AFAIK,或者可能是一些未处理的错误。我之前看到过,通常重新打开 SSMS 会修复它。
  • 请发布 SELECT 语句... 256 个字符是文本输出的默认最大大小。您可以尝试在那里设置更高的值。但是当你提到“到网格”时,我假设你得到一个网格结果并尝试点击带下划线的 XML。
  • 重启后尝试输出到文件,它仍然被修剪但我得到了更多;修剪量似乎由“结果到文本”选项中的最大列字符控制。最多有 8192 个字符。 WTF,微软的巨大质量检查失败。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 2010-12-21
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    相关资源
    最近更新 更多