【发布时间】:2009-06-16 02:25:38
【问题描述】:
我试图在存储过程中发送大约 1MB 的 XML 作为 XML 参数,但连接总是返回超时。
谁知道 XML 类型的大小限制是多少?
环境:
- Microsoft SQL Server 2005 Express
- .NET Framework 2.0
- C#
C#代码:
using (SqlCommand commandSave = new SqlCommand("SaveScanning", this.DatabaseConnection))
{
commandSave.CommandType = System.Data.CommandType.StoredProcedure;
SqlParameter scanningData = new SqlParameter("ScanningData", System.Data.SqlDbType.Xml);
scanningData.Value = new SqlXml(new XmlTextReader(**HEREISTHEXMLSTRING**, XmlNodeType.Document, null));
commandSave.Parameters.Add(scanningData);
commandSave.ExecuteNonQuery();
}
SQL 代码:
CREATE PROCEDURE [dbo].[SaveScanning]
(
@ScanningData XML
)
AS
BEGIN
.
.
.
【问题讨论】:
-
当传递一个较低的XML内容时,它可以正常工作。 (100kb)
-
大小限制是 2gb 的二进制 xml,这通常比 xml 的文本表示更紧凑(例如,qnames 在二进制 xml 中被标记)
-
我猜问题出在 SQL Server 上。当我尝试发送大 XML 并尝试从 SELECT 子句插入 TABLE 中的数据时,就会出现问题。当只使用 SELECT from XML 时,不会出现问题。
标签: xml sql-server-2005 parameters