Применяется к
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Проблемы

Рассмотрим следующий сценарий.

  • У вас есть база данных Microsoft SQL Server 2012 с включенными параметрами ALLOW_SNAPSHOT_ISOLATION и READ_COMMITTED_SNAPSHOT .

  • У вас есть по крайней мере три параллельных запроса, которые выполняются в одной и той же таблице.

  • В запросах используется подсказка запроса (TABLOCK, UPDLOCK) .

  • Каждый запрос обернут в явный оператор BEGIN TRAN , но инструкция commit Tran не выполняется.

При фиксации первого запроса в этом сценарии один из других запросов будет заблокирован. При включении READ_COMMITTED_SNAPSHOT вместе с подсказками подсказок TABLOCK и UPDLOCK сеансы принимают на таблице блокировку IX. Взаимоблокировка происходит, когда два одновременных сеанса пытаются одновременно преобразовать блокировки IX в блокировки X. Если READ_COMMITTED_SNAPSHOT отключена, сеансы будут получать шесть блокировок, которые не будут блокироваться, когда они преобразуются в блокировки X. Исправление устраняет это поведение, предоставляя LCK_M_SCH_S блокировки вместо IX locks при использовании READ_COMMITTED_SNAPSHOT с подсказками TABLOCK и UPDLOCK .Примечание.Эта проблема также возникает в Microsoft SQL Server 2008 R2. Исправление для SQL Server 2008 R2 будет выпущено в ближайшее время.

Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.

Статус

Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.