SQL Server使用FOR XML生成坏/无效/损坏的XML
问题描述:
我有一个简单的(?)问题。SQL Server使用FOR XML生成坏/无效/损坏的XML
我有一个表t_dane_nieruch
有一列nr_ewid
(int, 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 - 输出到文本或文件产生相同的...
答
你”可能会看到截断,SSMS对于非XML数据类型默认为256个字符,在发送到网格时XML默认为1MB。
您可以通过单击工具,修改此设置的选项,查询结果时,SQL Server,结果到网格,XML数据=无限
是不是太少喜欢说'40'和预期的要多? – billinkc 2015-02-24 20:16:45
我正在做的另一个假设是,你看到的XML被截断,因为SSMS截断......无论默认值是什么。如果您更改工具,选项,查询结果,SQL Server,结果到网格,XML数据=无限的设置,您是否获得了您期望的XML? – billinkc 2015-02-24 20:19:26
由于SQL Server Management Studio中的文本限制输出。永远不要依赖大块文本。即使您在选项中使用默认最大值,仍然会为非常大的文本块获取截断显示。 – pmbAustin 2015-02-24 20:20:04