有没有什么好方法可以调试"字符串或二进制数据会被截断?"

har*_*rpo 25 sql-server-2008

这一年是2010年.

SQL Server许可证并不便宜.

但是,此错误仍未指示或产生问题的.天哪,它甚至不能告诉你它是"字符串"还是"二进制"数据.

我错过了什么吗?

Wil*_*l A 18

解决这些问题的快速方法是将行选择到新的物理表中,如下所示:

SELECT * INTO dbo.MyNewTable FROM <the rest of the offending query goes here>
Run Code Online (Sandbox Code Playgroud)

...然后将此表的模式与INSERT先前进入的表的模式进行比较 - 并查找更大的列.


Har*_*non 1

您可以使用 if 条件检查每个插入值的长度,如果该值需要比当前列宽度更大的宽度,则截断该值并引发自定义错误。

如果您只需要确定导致问题的字段,那么这应该可行。我不知道是否有更好的方法来做到这一点。

  • 是的,当然这就是我最终使用的方法。我的问题是,为什么 SQL Server 在发现问题时不直接告诉您它在哪里?* (3认同)