SQL Server - несогласованное поведение при чтении незафиксированных изменений одной и той же транзакции

Asked
Viewd851

1

Работая с SQL-сервером с уровнем изоляции «прочтение зафиксированного снимка», мы обычно записываем данные в базу данных и считываем их дальше в контексте той же транзакции. Обычно при чтении из базы данных мы видим собственные незафиксированные изменения, но только зафиксированные изменения, сделанные другими. Мы предположили, что это ожидаемое поведение.

Мы обнаружили, что в некоторых относительно редких случаях мы не видим записанные значения - только ранее зафиксированные значения.

Есть идеи, что могло вызвать несоответствие?

2 ответов

0

Оказывается, это известная несогласованность в SQL Server: при чтении из базы данных вы обычно видите незафиксированные изменения вашей собственной транзакции (на всех уровнях изоляции), но это не всегда гарантируется. В моем случае было решено использовать with (readuncommitted), доверяя механизму блокировки на уровне приложения, который предотвращает одновременное изменение одних и тех же данных.

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

0

Есть несколько хороших статей о том, что может пойти не так. Возможно, они помогут

Крейг Фридман, Сериализуемый и уровень изоляции моментальных снимков Аналогия черного и белого мрамора

Хьюго Корнелис, 4 статьи «Изоляция моментальных снимков: угроза целостности ": DRI / FK незаметно переходят на разные уровни изоляции

  • Хорошие статьи, но в них не обсуждается вопрос чтения данных, измененных в одной транзакции.

    Youval Bronicki22 апреля 2009, 13:19
  • В первой статье упоминаются черный / белый мрамор. Вы откатываетесь? Во второй четверке упоминаются FK, меняющие уровень изоляции. В том же TXN, если вы читаете свои собственные зафиксированные данные до изменения, был ли их откат? Или ваш уровень изоляции изменился ... что может сбить с толку, поэтому вы читаете свои собственные зафиксированные данные до изменения

    gbn22 апреля 2009, 13:55
  • Мои проблемы не связаны с откатом (см. отдельный ответ)

    Youval Bronicki20 мая 2009, 13:22