日期:2014-05-17  浏览次数:20708 次

讨厌的微软错误提示“将截断字符串或二进制数据”
在insert或update数据时,常碰到这种提示:
消息 8152,级别 16,状态 2,第 3 行
将截断字符串或二进制数据。
语句已终止。

也不指明是哪列,也不说明是哪个值,查找起来相当麻烦。
微软的工程师这么弱智吗?这么多年了也不知道改进一下。

------解决方案--------------------
同愤慨
能高速导入,是无法区分哪行、哪列不符合
但是,在失败后,应该允许用户按低速方式尝试导入,这样就是一个循环,很容易定位哪行、哪列不符合

------解决方案--------------------
不知道微软为什么不提供更友好的错误提示,难道有其他方面的考虑?
没办法,只有在遇到这种问题之前,认真考虑字段或变量的最大长度
------解决方案--------------------
如果 字段多 ,的确是个头疼的问题,绝对是训练 眼里的活。

要从根本解决 其实还是 在设计阶段多分析需求 定义好字段类型和字段长度。
------解决方案--------------------
对于这些问题:
1、一般出现在create table 的定义里面。
2、尽量对这些字段每一个占一行这样放置
3、使用二分法查找问题的根源。即先注释后半部分,修改语句后执行,如果不抱错,证明问题在后半部分。对后半部分的前半部分同样注释,改写查询再执行,如此下去,很快就知道大概是哪个字段了。一般都是varchar/char/nvarchar/nchar/ntext/text这些字段影响的。
------解决方案--------------------
确实够弱智的,呵呵。。。
------解决方案--------------------
断就断了,继续嘛,干嘛直接死掉呢
------解决方案--------------------
这个提示有的时候确实不太好找。
我现在用的SQL SERVER 2012,类似情况经常需要调试。

明显是长度不够,但是不知道是哪个字段,还是哪个变量?