SQL Server使用FOR XML生成坏/无效/损坏的XML

问题描述:

我有一个简单的(?)问题。SQL Server使用FOR XML生成坏/无效/损坏的XML

我有一个表t_dane_nieruch有一列nr_ewidint, not null

我的查询看起来是这样的:

select top 40 
    nr_ewid 
from 
    t_dane_nieruch 
for xml auto, elements 

它产生这样的输出:

<t_dane_nieruch> 
    <nr_ewid>3</nr_ewid> 
</t_dane_nieruch> 
<t_dane_nieruch> 
    <nr_ewid>4</nr_ewid> 
</t_dane_nieruch> 
<t_dane_nieruch> 
    <nr_ewid>7</nr_ewid> 
</t_dane_nieruch> 
<t_dane_nieruch> 
    <nr_ewid>8</nr_ewid> 
</t_dane_nieruch> 
<t_dane_nieruch> 
    <nr_ewid>11</nr_ewid> 
</t_dane_nieruch> 
<t_dane_nieruch> 
    <nr_ewid>49</nr_ewid> 
</t_dane_nieruch> 
<t_dane_nieruch> 
    <nr_ewid>51</nr_ewid> 
</t_dane_nieruch> 

问题:

  • 输出是不是一个有效的XML输出元素
  • 数太少

使用与SQL Server 2008 R2快速SSMS - 输出到文本或文件产生相同的...

+0

是不是太少喜欢说'40'和预期的要多? – billinkc 2015-02-24 20:16:45

+0

我正在做的另一个假设是,你看到的XML被截断,因为SSMS截断......无论默认值是什么。如果您更改工具,选项,查询结果,SQL Server,结果到网格,XML数据=无限的设置,您是否获得了您期望的XML? – billinkc 2015-02-24 20:19:26

+0

由于SQL Server Management Studio中的文本限制输出。永远不要依赖大块文本。即使您在选项中使用默认最大值,仍然会为非常大的文本块获取截断显示。 – pmbAustin 2015-02-24 20:20:04

你”可能会看到截断,SSMS对于非XML数据类型默认为256个字符,在发送到网格时XML默认为1MB。

您可以通过单击工具,修改此设置的选项,查询结果时,SQL Server,结果到网格,XML数据=无限