n1ro°
RU

Ошибки · Решение

SQL Server ошибка 3960: что означает и как исправить

Транзакция snapshot isolation попыталась изменить строку, которую после начала snapshot изменила другая транзакция.

Редакция N1RO · Проверено

Короткий ответ

SQL Server error 3960 — Snapshot isolation update conflict. Сообщение Database Engine нужно разбирать вместе с объектом, statement и контекстом подключения/транзакции.

Что означает ошибка

Транзакция snapshot isolation попыталась изменить строку, которую после начала snapshot изменила другая транзакция.

Возможные причины

  • Две транзакции обновляют одну строку при snapshot isolation.
  • Длинная snapshot-транзакция увеличивает окно конфликта.
  • Приложение не повторяет безопасно транзакцию после update conflict.

Что проверить

  • Определите конфликтующий UPDATE и длительность транзакции.
  • Проверьте isolation level и начало snapshot.
  • Найдите конкурирующую транзакцию, изменившую ту же строку.

Безопасные шаги

  1. Сократите транзакцию и повторите её целиком при безопасном retry.
  2. Разведите конкурирующие updates бизнес-логикой или сериализацией.
  3. Не повторяйте только последний statement, если транзакционный контекст уже откатан.

Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.

Когда нужен сервис

  • Если SQL Server 3960 повторяется после проверки указанного объекта и контекста, приложите полный текст ошибки, query/plan и состояние транзакции DBA или владельцу приложения.

Похожие ошибки

  • /errors/sql-server-error-102/
  • /errors/sql-server-error-823/
  • /errors/sql-server-error-824/

Что учитывать

Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.

Официальный источник

Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.