Ознаки
Розглянемо такий сценарій:
-
У вас є база даних Microsoft SQL Server 2012 з увімкнутими параметрами ALLOW_SNAPSHOT_ISOLATION та READ_COMMITTED_SNAPSHOT .
-
У вас є принаймні три Одночасні запити, які виконуються з тією самою таблицею.
-
У запитах використовується Підказка запиту (Tblock, UPDLOCK) .
-
Кожен запит буде обгорнуто в явну інструкцію " почати ", але оператор " виконати " не виконується.
Коли перший запит виконується в цьому сценарії, один з інших запитів буде глухий кут. Якщо READ_COMMITTED_SNAPSHOT ввімкнуто разом із порадами для запитів Tblock і updlock , під час сеансів в таблиці можна виконати IX замки. Глухий кут відбувається, коли два одночасні сесії намагатимуться перетворити IX замки на X-замки одночасно. Якщо READ_COMMITTED_SNAPSHOT вимкнуто, СЕАНСИ отримають шість замків, які не будуть тупиками, коли вони перетворюються на X-замки. Це виправлення усуває цю поведінку, надавши LCK_M_SCH_S блокує замість IX-блокувань, коли READ_COMMITTED_SNAPSHOT використовується з підказками Tblock і updlock .Примітка.Ця проблема також виникає в Microsoft SQL Server 2008 R2. Термінове виправлення для SQL Server 2008 R2 буде випущено найближчим часом.
Спосіб вирішення
Ця проблема була спочатку зафіксоване в цьому сукупному оновленні сервера SQL Server.
Сукупне оновлення 8 для SQL Server 2012 SP1 /en-us/help/2917531
Кожне нове Сукупне оновлення для SQL Server містить усі поточні виправлення та всі виправлення системи безпеки, які були включені до попереднього сукупного оновлення. Ознайомтеся з найновішими сукупними оновленнями для сервера SQL Server:
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "застосовується до".