为什么SQL Server不告诉我哪个字段导致错误?

时间:2013-04-25 14:27:38

标签: sql sql-server sql-server-2008

执行sql插入时,它可能会失败,因为其中一个字段将无法验证。有各种各样的验证可能会失败。例如我最近看到的:

[22003] [Microsoft][ODBC SQL Server Driver][SQL Server]Arithmetic overflow error converting varchar to data type numeric. (8115)

[22001] [Microsoft][ODBC SQL Server Driver][SQL Server]String or binary data would be truncated. (8152)

当你有很多列并且准备好的语句一次插入许多行时,去寻找麻烦的字段是非常令人沮丧的。为什么Sql Server无法告诉我哪个字段有问题?请注意我不是在考虑如何解决这些个别错误,而是一个更为基本的问题,为什么没有实现更好的错误消息。

编辑:Why can't SQL Server tell me which column is causing the error这被标记为重复关闭实际上没有回答问题。那里接受的答案没有解决这个问题,所以给它一个奖励就什么都不做。

1 个答案:

答案 0 :(得分:1)

SQL是基于集合的引擎,集合的逻辑是布尔值。数据是集合还是不是。是/否。有很多花哨的技术可以让你的设置尽快回到你的客户端。我的猜测是,如果你开始检查集合中的个别值,你就会在头部拍摄性能非常糟糕,以至于它会让客户竞相争夺rdbms。是的,当插入失败时很烦人,但将数据分成两半以找到异常的位置会让你很快失败。然后,您可以改进设计方法,以防止问题再次出现。 (不那么草率,更健壮)

但是你必须向SQL开发团队询问somone以获得明确的答案,我猜他们会给你三个理由:性能,性能以及可扩展的性能。 HTH