sql-server-2005 – 字符串或二进制数据将被截断 – 海森堡问题
当你收到这个错误时,首先要问的是,哪一列?不幸的是,SQL Server在这里没有帮助.所以你开始做试验和错误.好吧,现在我有一个声明如下:
INSERT tbl (A,B,C,D,E,F,G) SELECT A,B * 2,q.F,G FROM tbl,othertable q WHERE etc etc 注意 >某些值是从另一个表修改或链接的,但大多数值来自原始表,因此它们不能真正导致截断返回到同一个字段(我知道). 以前有人见过这个吗? 谢谢. 更新:我还通过过滤掉SELECT来完成“水平”测试,结果大致相同.换句话说,如果我说 > WHERE id在1和100之间:错误 我尝试了很多种组合,它不能局限于一行. 解决方法虽然表没有键,约束,索引或触发器,但它确实有统计信息,并且存在问题.我使用这个脚本杀死了所有表的统计数据http://sqlqueryarchive.blogspot.com/2007/04/drop-all-statistics-2005.html 瞧,INSERT又回来了.为什么统计信息会导致此错误?我不知道,但那是另一个问题…… 更新:即使删除了统计信息,此错误也会恢复.因为我确信消息本身不准确(没有截断的证据),所以我选择了this solution: SET ANSI_WARNINGS OFF INSERT ... SET ANSI_WARNINGS ON 好吧,它更像是一个黑客而不是一个解决方案,但它允许我 – 并希望其他人 – 转向其他事情. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |