如何在SQL Server参数中存储超过4000个字符?

时间:2012-05-03 19:42:17

标签: asp.net sql-server xml sql-server-2005

我正在尝试将大于4000个字符的XML传递给存储过程。我尝试使用NTEXTNVARCHAR(MAX)VARCHAR(MAX)VARCHAR(8000)XML作为参数类型,但我总是收到错误:

  

System.Data.SqlClient.SqlException:字符串或二进制数据将被截断。声明已经终止。

该值未存储在表中,它只是一个从中选择数据然后存储到表中的变量。

ASP.NET不能发送超过4000个字符作为参数吗?或者SQL Server中是否有可以关闭的设置?

谢谢,

托马斯

编辑:

这适用于NTEXT。我进入了错误详细信息,发现SQL的哪一行导致了错误,结果发现有一个完全不相关的列设置为VARCHAR(50)应该是VARCHAR(MAX) - 我认为它来自于10000个字符XML,但它完全不相关。我很抱歉。

3 个答案:

答案 0 :(得分:1)

这是所有版本中的sql server限制。您可以将xml拆分为两个varchar变量,并将它们合并到存储过程中。这是该问题的解决方法。

答案 1 :(得分:1)

以较小的块分解XML并将它们分配给单独的变量,然后将它们连接起来

DECLARE @ SQL1,@ SQL2

SET @ SQL1 = chunk1

SET @ SQL2 = chunk2

SET @ SQLn = chunkn

exec(@ SQL1 + @ SQL2 ..... + @ SQLn)

答案 2 :(得分:0)

似乎有几种方法可以做到这一点。 This是我最近采用的方式。