Поделиться через


Уровни изоляции транзакций курсоров

Режим блокировки транзакций для конкретного курсора определяется настройкой параллелизма этого курсора, подсказками блокировки, заданными в инструкции SELECT курсора и параметрами уровня изоляции транзакции.

Microsoft SQL Server 2005 поддерживает следующие уровни изоляции транзакций курсора.

  • Фиксированное чтение
    SQL Server получает разделяемую блокировку при чтении строки в курсор, но освобождает блокировку сразу после считывания этой строки. Поскольку запросы разделяемой блокировки блокируются монопольной блокировкой, курсору не удается считать строку, которую другая задача обновила, но еще не зафиксировала. Фиксированное чтение является уровнем изоляции по умолчанию как для SQL Server, так и для ODBC.
  • Незафиксированное чтение
    SQL Server не запрашивает блокировки во время считывания строки в курсор и не обращает внимания на монопольные блокировки. Курсоры могут заполняться обновленными, но еще не зафиксированными значениями. Пользователь обходит все механизмы управления блокировками транзакций, существующие в SQL Server 2005.
  • Повторяющееся или сериализуемое чтение
    SQL Server 2005 запрашивает разделяемую блокировку на каждую строку, которая считывается в курсор, как и в режиме READ COMMITTED, но если курсор открыт внутри транзакции, разделяемая блокировка удерживается до завершения транзакции, а не освобождается после считывания строки. Это равнозначно указанию HOLDLOCK в инструкции SELECT.
  • Моментальный снимок
    SQL Server не запрашивает блокировки во время считывания строки в курсор и не обращает внимания на монопольные блокировки. Курсор заполняется значениями, как если бы транзакция была только что открыта. Блокирование прокрутки запрашивается независимо от изоляции моментальных снимков.

См. также

Основные понятия

Настройка уровня изоляции транзакции
Настройка уровней изоляции транзакций
Параллелизм курсоров (компонент Database Engine)

Справка и поддержка

Получение помощи по SQL Server 2005