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