我正在编写一个 CLR 存储过程来获取字符串形式的 XML 数据,然后使用该数据执行某些命令等。
我遇到的问题是,每当我尝试发送超过 4000 个字符的 XML 时,都会收到错误,因为 XmlDocument 对象无法加载 XML,因为缺少许多结束标记,由于文本在 4000 个字符后被截断。
我认为这个问题归结为 CLR 存储过程将字符串参数映射到 nvarchar(4000),当我认为像 nvarchar(max) 或 ntext 这样的东西就是我需要的时。
不幸的是,我找不到从 .NET 类型到 ntext 的映射,字符串类型自动转到 nvarchar(max)。
有谁知道我的问题的解决方案吗?
感谢您的帮助
最佳答案
我认为您需要 System.Data.SqlTypes.SqlXml
类型。
例如:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Xml;
using Microsoft.SqlServer.Server;
public partial class StoredProcedures
{
[SqlProcedure]
public static void StoredProcedure1(SqlXml data)
{
using (XmlReader reader = data.CreateReader())
{
reader.MoveToContent();
// Do stuff here.
}
}
};
关于stored-procedures - 将大量 XML 传输到 CLR 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/302131/