1

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

System.Data.SqlClient.SqlException:字符串或二进制数据将被截断。该语句已终止。

该值没有存储到表中,它只是一个变量,从中选择了数据然后存储到表中。

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

谢谢,

托马斯

编辑:

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

4

3 回答 3

2

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

声明@SQL1,@SQL2

SET @SQL1=chunk1

SET @SQL2=chunk2

SET @SQLn=chunkn

执行 (@SQL1+@SQL2.....+@SQLn)

于 2012-05-04T15:45:18.083 回答
1

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

于 2012-05-04T10:39:07.527 回答
0

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

于 2012-07-13T21:12:37.533 回答