【发布时间】:2012-05-13 09:00:51
【问题描述】:
我正在尝试将大于 4000 个字符的 XML 传递给存储过程。我尝试使用NTEXT、NVARCHAR(MAX)、VARCHAR(MAX)、VARCHAR(8000) 和XML 作为参数类型,但我总是收到错误:
System.Data.SqlClient.SqlException:字符串或二进制数据将被截断。该语句已终止。
该值没有被存储到表中,它只是一个变量,从中选择了数据然后存储到表中。
ASP.NET 不能发送超过 4000 个字符作为参数吗?或者 SQL Server 中是否有我可以关闭的设置?
谢谢,
托马斯
编辑:
这适用于NTEXT。我查看了错误详细信息,发现 SQL 的哪一行导致了错误,结果发现有一个完全不相关的列设置为 VARCHAR(50),应该是 VARCHAR(MAX) - 我假设它来自 10000 个字符 @ 987654330@ 但完全不相关。我很抱歉。
【问题讨论】:
-
你试图在数据库中写入的那一列的长度是多少?
-
如果您将值作为参数传递,您是否记得增加了参数的宽度以及数据类型?那个经常咬我...
-
向我们展示代码,以便我们指出错误,而不是猜测。发生截断是因为您的代码截断了它。
-
您不应该再使用
NTEXT- 它已被弃用,很快就会从 SQL Server 中删除。改用NVARCHAR(MAX)- 它具有所有相同的有益特性,甚至可以像“普通”NVARCHAR(x)字符串一样对待 - 对它使用所有字符串函数(处理NTEXT总是很笨拙) -
考虑删除问题!
标签: asp.net sql-server xml sql-server-2005