【问题标题】:Unexpected duplicate rows in SQL ServerSQL Server 中出现意外的重复行
【发布时间】:2020-06-09 08:49:10
【问题描述】:

我遇到了一个问题,即我在表中发现重复的行,除了主键(主键是一个自动增量值)之外,每一列的值都相同。表中的行表示具有唯一值的唯一条目,因此没有理由使值相同。换句话说,行为异常。

我调试此问题的困难在于,这发生在我无法复制的生产环境中,以及我正在使用第三方数据层写入数据库的事实,而我并不完全了解它是如何在内部运作的。

在我研究第三方工具之前,我想知道在任何情况下,SQL Server 是否有可能在执行单个命令时失败并在表中记录相同的数据两次、三次、四次或更多次.

我目前唯一的迹象是客户端出现了一些超时,并且在队列长度超过 50 的情况下多次发生磁盘活动过载。糟糕的磁盘或服务器性能是否会导致 SQL Server 以这种方式失败?

【问题讨论】:

  • 当你听到蹄声时,想想马,而不是斑马。大多数意外的数据重复来自格式错误的查询。从那里开始。
  • 这里没有太多我们可以真正提供的想法,除了想法之外,这些想法也不会成为 SO 的主题。我们甚至没有任何样本数据来冒险猜测。它可以像用户按钮点击提交按钮/返回键一样简单吗?我们真的不知道。
  • @Larnu 你是对的,但我避免深入,因为它很可能是与应用程序相关的问题。我只是想知道是否有人遇到过类似的问题。无需用户参与,数据由服务自动生成。

标签: sql-server duplicates


【解决方案1】:

我想知道在任何情况下 SQL Server 是否有可能在执行单个命令时失败并在表中记录相同的数据两次、三次、四次或更多次。

没有。但是您应用程序中的其他层可能会这样做。

我目前唯一的迹象是客户端的一些超时

例如,如果客户端发出请求,并且请求在成功后超时,但在通知客户端成功之前,可能会发生这种情况。如果请求通过客户端和 SQL Server 之间的多个网络跃点,这尤其常见。

不过,根本原因可能是糟糕的表格设计:

我在一个表中发现重复的行,除了主键之外的列中具有相同的值,主键是一个自动增量值

如果在除 PK 之外的每一列中都有重复项无效,则您缺少唯一索引或唯一约束。

【讨论】:

  • 我想可能有很多问题会导致查询性能不佳。令我困扰的是,相同的应用程序/配置在多个环境中运行多年而没有任何问题,并且在那个特定的生产环境中它运行良好,直到几天前。一开始不太频繁,现在比较频繁。
【解决方案2】:

为了消除任何误导性假设,我将问题追溯到与 SQL Server 无关的问题。非常感谢@David 强烈肯定 SQL Server 在任何情况下都没有这种行为。它节省了我看错误方向的时间。

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2021-10-06
    相关资源
    最近更新 更多