Неожиданные повторяющиеся строки на SQL сервере - PullRequest
0 голосов
/ 25 февраля 2020

Я столкнулся с проблемой, когда я нахожу повторяющиеся строки в таблице с одинаковыми значениями в каждом столбце, за исключением первичного ключа, который является значением автоинкремента. Строки в таблице представляют уникальные записи с уникальными значениями, поэтому нет никаких причин, чтобы значения были идентичными. Другими словами, поведение ненормальное.

Моя трудность при отладке этой проблемы заключается в том, что это происходит в производственной среде, которую я не могу воспроизвести, и в том, что я использую сторонний уровень данных для напишите в базу данных, что я не полностью осведомлен о том, как она работает внутри.

Прежде чем я исследую сторонний инструмент, я хотел бы знать, есть ли шанс при любых обстоятельствах, что SQL Сервер будет Сбой и запись одних и тех же данных два, три, четыре или более раз в таблицу при выполнении одной команды.

Единственными указаниями, которые у меня есть в данный момент, являются некоторые тайм-ауты на стороне клиента и много случаев дисковой активности перегрузка, когда длина очереди превышает 50. Может ли низкая производительность диска или сервера вызвать сбой сервера SQL таким образом?

Ответы [ 2 ]

3 голосов
/ 25 февраля 2020

Я хотел бы знать, есть ли шанс при любых обстоятельствах, что SQL Сервер выйдет из строя и зарегистрирует одни и те же данные два, три, четыре или более раз в таблице при выполнении одной команды.

Нет. Но другие уровни в вашем приложении могут сделать это.

Единственные признаки, которые у меня есть в данный момент, - это некоторые тайм-ауты на стороне клиента

Например, если клиент делает запрос и время ожидания истекают после его успешного выполнения, но до того, как клиент был уведомлен об успехе, это может произойти. Это особенно распространено, если запрос проходит через несколько сетевых переходов между клиентом и SQL сервером.

Причиной root может быть плохой дизайн таблицы:

Я нахожу повторяющиеся строки в таблице с идентичными значениями в самом столбце, кроме первичного ключа, который является автоинкрементным значением

Если недопустимо иметь дубликаты в каждом столбце, кроме PK, вам не хватает уникального индекса или уникального ограничения.

0 голосов
/ 25 февраля 2020

Просто чтобы опровергнуть вводящие в заблуждение предположения, я проследил проблему до проблем, не связанных с SQL сервером. Большое спасибо @David за решительное подтверждение того, что SQL сервер не имеет такого поведения ни при каких обстоятельствах. Это сэкономило мне время, когда я смотрел не в ту сторону.

...