我正在尝试使用For Xml从SQL Server 2005返回Xml值。从SQL Server返回的xml大小是否有限制?
我将使用ExecuteXmlReader来获取C#代码中的值。
此外,XmlReader中可容纳的数据是否有任何限制?
任何想法......
答案 0 :(得分:5)
没有实际限制,但通常会返回相当于nvarchar(MAX)的值,因此您可能会遇到大约20亿个字符的限制(可能远远少于此因为有限的免费地址空间。)
但是,您需要担心的是没有小限制,例如32KB SQL语句限制。
答案 1 :(得分:3)
从技术上讲,由于XML数据类型基于NVARCHAR(MAX)数据类型,因此存在1 Gig限制。但是,如果你有1 Gig XML文档,你需要考虑缩小它。
答案 2 :(得分:1)
请务必使用以下代码:
while(xmlReader.Read()){
...
}
否则,如果XML文档太大而无法放入一条记录,则可能最终会出现无效的XML。 SQL Server会将它分散到多个记录中,直到今天......
答案 3 :(得分:0)
不,没有限制。但显而易见的是,如果返回数兆字节的数据,数据检索的速度将受到影响。
答案 4 :(得分:0)
使用SQL 2005和.Net 2.0 Microsoft不会发布限制,但实际上大型结果集可能因“内存不足”错误而失败等
对于XML会给数据库服务器带来额外负担,您确定在应用服务器或客户端上将原始数据处理成XML会更好吗?
答案 5 :(得分:0)
如果您在SQL Server Management Studio中看到了结果,可以选择设置可显示的数据量,默认只有2MB。
要更改它,请遵循以下路径:
工具>选项>查询结果> SQL Server>结果到网格>检索到的最大字符数
答案 6 :(得分:0)
SQL Server - > XML,然后C#将文本翻译成XML。那里效率不高。
撤回数据正常。使用数据阅读器。然后你可以把它变成可翻译的格式。这些数据的消费者是什么?他们真的需要XML吗?他们需要定期转储数据吗?
或者,您可以使用DataSet。您可能在这里有一个很好的DataSet案例。您可以将其保存为XML并保存或发送。 DataSet旨在容纳一堆表数据。
答案 7 :(得分:0)
如果返回的字符数超过限制,则会收到一个异常“发生了意外的文件结尾”,以防止使用以下代码:
using(XmlReader reader = command.ExecuteXmlReader())
{
XmlDocument xmlDocument = new XmlDocument();
while (reader.Read())
{
xmlDocument.Load(reader);
}
return xmlDocument;
}