2

执行 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 不能告诉我哪个字段有问题?请注意,我不是在寻找如何解决这些单独的错误,而是一个更基本的问题,为什么没有实现更好的错误消息。

编辑:为什么 SQL Server 不能告诉我是哪一列导致了被标记为重复关闭的错误实际上并没有回答这个问题。那里接受的答案没有解决这个问题,所以悬赏它不会有任何作用。

4

1 回答 1

1

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

但是您必须向 SQL 开发团队的某个人询问明确的答案,我猜他们会给您三个原因:性能、性能,当然还有可扩展的性能。高温高压

于 2013-04-25T14:47:38.760 回答