Stored procedures 将大量XML传输到CLR存储过程
我正在编写一个CLR存储过程,以字符串的形式获取XML数据,然后使用这些数据执行某些命令等 我遇到的问题是,每当我尝试发送长度超过4000个字符的XML时,我都会遇到一个错误,因为XmlDocument对象无法加载XML,因为缺少很多结束标记,因为文本在4000个字符后被截断 我认为这个问题可以归结为将字符串参数映射到nvarchar(4000)的CLR存储过程,而我认为nvarchar(max)或ntext之类的东西正是我所需要的 不幸的是,我找不到从.NET类型到ntext的映射,字符串类型自动转到nvarchar(max) 有人知道我的问题的解决办法吗Stored procedures 将大量XML传输到CLR存储过程,stored-procedures,clr,Stored Procedures,Clr,我正在编写一个CLR存储过程,以字符串的形式获取XML数据,然后使用这些数据执行某些命令等 我遇到的问题是,每当我尝试发送长度超过4000个字符的XML时,我都会遇到一个错误,因为XmlDocument对象无法加载XML,因为缺少很多结束标记,因为文本在4000个字符后被截断 我认为这个问题可以归结为将字符串参数映射到nvarchar(4000)的CLR存储过程,而我认为nvarchar(max)或ntext之类的东西正是我所需要的 不幸的是,我找不到从.NET类型到ntext的映射,字符串类型
感谢您对CLR存储过程、char、varchar、text、ntext、image、cursor、, 用户定义表类型,不能将表指定为参数
您应该能够使用nvarchar(max)类型而不是ntext类型。我认为您需要
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.
}
}
};
ntext将在SQL Server的未来版本中消失,因此您应该改用nvarchar(MAX)