sql server FOR XML有字符限制吗?

时间:2012-02-03 14:42:34

标签: sql-server

我正在xml中执行查询并使用FOR XML EXPLICIT将其转换为xml文件。这是有效的,除非我尝试查询大量文件。

如果我查询ID在400到500之间的记录,如果我尝试查询ID在500到600之间的记录,它就有效,但是如果我尝试查询400到600则失败。

这是错误:

  

无法显示XML。发生以下错误:'',十六进制   值0x1E,是无效字符。第1457行,第107位。

     

一种解决方案是增加从中检索的字符数   用于XML数据的服务器。要更改此设置,请在“工具”菜单上   单击选项。

好?然后什么?我在哪里必须完全改变选项?

编辑:在查询结果>下将XML数据设置为无限制SQL Server>网格到无限制的结果不起作用。

编辑:返回代码:

<ExceptionDocument><Error><Message>'&#x1E;', hexadecimal value 0x1E, is an invalid character. Line 953, position 107.</Message><StackTrace>   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
   at System.Xml.XmlTextReaderImpl.ThrowInvalidChar(Char[] data, Int32 length, Int32 invCharPos)
   at System.Xml.XmlTextReaderImpl.ParseCDataOrComment(XmlNodeType type, Int32&amp; outStartPos, Int32&amp; outEndPos)
   at System.Xml.XmlTextReaderImpl.ParseCDataOrComment(XmlNodeType type)
   at System.Xml.XmlTextReaderImpl.ParseElementContent()
   at System.Xml.XmlTextReaderImpl.Read()
   at System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)
   at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
   at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
   at System.Xml.XmlDocument.Load(XmlReader reader)
   at System.Xml.XmlDocument.LoadXml(String xml)
   at SitePublisher.Base.BasePub.ExecuteCommand(String sql, Int32 attempt, NameValueCollection parameters)</StackTrace><InnerException /></Error></ExceptionDocument>

编辑:我猜测0x1E是文件结束符。

编辑:我认为我的第一个陈述可能是错误的,我正在处理损坏的数据。它总是返回记录426的错误。

2 个答案:

答案 0 :(得分:5)

创新。

在SQL-Server Management-Studio中,转到“工具”->“选项”

在QueryResults-> SQL-Server->“ Results To Grid”下,将“ XML data”的值设置为无限制。
现在,您需要重新启动SQL-Server Management Studio才能使更改生效。

Unlimited

答案 1 :(得分:1)

它显然确实是一个无效的字符,它在记事本++中显示为'RS',SQL管理工作室给出的错误完全让我偏离轨道。