我有一个SQL存储过程,它接受VARCHAR(MAX)类型的参数。 据我所知,根据我读到的所有内容,这些字符串的最大大小为2GB: MSDN
由于某种原因,当传递大于8KB的字符串时,我得到:
字符串或二进制数据将被截断。
为什么我会收到此错误消息,如何解决?
答案 0 :(得分:8)
要避免此问题,您必须先将字符串转换为varchar(max)
:
column = cast(other_column as varchar(max))
这样任何超过max(8000或4000,取决于版本)的字符串都将被截断为最大长度。
答案 1 :(得分:8)
根据BoL(您指定的链接),解释存在差异。 您可以在查询中使用的最大数量(n部分)是8000.出于存储目的,varchar(max)可以在磁盘上处理2GB。
它只是解释用于查询和存储目的的数据类型。所以最重要的是,您只能在查询中使用8000个字符....
答案 2 :(得分:1)
你传递的字符串大于比数据库中的列,对吗? 尝试增加列的大小。
答案 3 :(得分:1)
您传递的字符串大于数据库中的列。
与您的数据库表类似如下:
EXECUTIVE varchar(15)
但您的插入字符串(在 vb.net 中):
cmd.Parameters.Add("@EXECUTIVE", Data.SqlDbType.VarChar, 150).Value = CmbExecutive.Text.ToString()