Ошибки · Решение
SQL Server ошибка 3960: что означает и как исправить
Транзакция snapshot isolation попыталась изменить строку, которую после начала snapshot изменила другая транзакция.
Короткий ответ
SQL Server error 3960 — Snapshot isolation update conflict. Сообщение Database Engine нужно разбирать вместе с объектом, statement и контекстом подключения/транзакции.
Что означает ошибка
Транзакция snapshot isolation попыталась изменить строку, которую после начала snapshot изменила другая транзакция.
Возможные причины
- Две транзакции обновляют одну строку при snapshot isolation.
- Длинная snapshot-транзакция увеличивает окно конфликта.
- Приложение не повторяет безопасно транзакцию после update conflict.
Что проверить
- Определите конфликтующий UPDATE и длительность транзакции.
- Проверьте isolation level и начало snapshot.
- Найдите конкурирующую транзакцию, изменившую ту же строку.
Безопасные шаги
- Сократите транзакцию и повторите её целиком при безопасном retry.
- Разведите конкурирующие updates бизнес-логикой или сериализацией.
- Не повторяйте только последний statement, если транзакционный контекст уже откатан.
Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.
Когда нужен сервис
- Если SQL Server 3960 повторяется после проверки указанного объекта и контекста, приложите полный текст ошибки, query/plan и состояние транзакции DBA или владельцу приложения.
Похожие ошибки
- /errors/sql-server-error-102/
- /errors/sql-server-error-823/
- /errors/sql-server-error-824/
Что учитывать
Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.
Официальный источник
Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.