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