sql-server SQL Server FOR XML是否有字符限制?

r6vfmomb  于 2022-10-31  发布在  SQL Server
关注(0)|答案(2)|浏览(263)

我在xml中执行一个查询,并使用FOR XML EXPLICIT将其转换为一个xml文件。除非我试图查询大量文件,否则这是有效的。
如果我查询ID在400和500之间的记录,它可以工作;如果我尝试查询ID在500和600之间的记录,它可以工作;但如果我尝试查询ID在400到600之间的记录,它会失败。
这是错误:
无法显示XML。发生下列错误:“”(十六进制值0x 1 E)是无效字符。第1457行,位置107。
一种解决方案是增加从服务器检索XML数据的字符数。若要更改此设置,请在“工具”菜单上单击“选项”。
然后呢,我到底要在哪里改变选项呢?
编辑:在“查询结果”〉“SQL Server”〉“结果到网格”下将“XML数据”设置为“无限制”不起作用。
编辑:返回代码:

<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>

编辑:我猜0x 1 E是一个文件结束字符。
编辑:我想我的第一个语句可能是错误的,我正在处理损坏的数据。它总是返回记录426的错误。

enyaitl3

enyaitl31#

招魂术。
在SQL-Server Management-Studio中,转到“工具”-〉“选项
在QueryResults-〉SQL-Server-〉“结果到网格”下,将“XML数据”的值设置为无限制。

现在您必须重新启动SQL-Server Management Studio,变更才会生效。

2sbarzqh

2sbarzqh2#

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

相关问题