stored-procedures - 将大量 XML 传输到 CLR 存储过程

标签 stored-procedures clr

我正在编写一个 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/

相关文章:

c# - 为什么某些值类型的数组之间的强制转换似乎会破坏类型安全?

garbage-collection - 垃圾收集器如何决定何时杀死 WeakReferences 持有的对象?

MYSQL在if语句中执行存储过程或运行复杂的SET语句

mysql - 如何使用 MySQL 存储过程计算排名?

sql-server-2008 - 在将字符串转换为uniqueidentifier时抑制错误

visual-studio-2008 - VC2008,如何为 C++/CLI 项目中的单个文件关闭 CLR 标志

mysql - 创建存储过程出错

sql - 使用 SET FMTONLY 的 SSRS 中没有动态 SQL 存储过程的字段

memory-management - WinRT 如何处理 BitmapImage 和 Image 内存

c# - 在对子类使用 'dynamic' (C#) 时,.NET 4 如何决定调用哪个方法?