Ознаки
Розглянемо такий сценарій:
-
У вас є база даних із параметрами ALLOW_SNAPSHOT_ISOLATION та READ_COMMITTED_SNAPSHOT , які ввімкнуто в Microsoft SQL Server 2008 R2.
-
У цій статті наведено оператор Select , що містить підказки Tblock і updlock , які відповідатимуть таблиці в базі даних.
-
Оператор Select переноситься в ЯВНИЙ початок RAN, але не виконується виконання.
-
Ще два з тих самих запитів, які запускаються з тими самими підказками запитів, наведено в явній угоді.
У цьому сценарії, коли перший запит буде скоєно, один з інших запитів матиме глухий кут.
Причина
Ця проблема виникає, тому що SQL Server неправильно повідомляє про глухий кут в одному з наведених нижче сценаріїв.
-
Коли ALLOW_SNAPSHOT_ISOLATION та READ_COMMITTED_SNAPSHOT ввімкнуто для бази даних, кілька запитів, які не можуть бути отримані з тієї самої угоди, можна буде отримати повідомлення про те, що його неправильно заблоковано після завершення одного з них.
-
Коли ALLOW_SNAPSHOT_ISOTION ввімкнуто, і в розділі підказки вибрано параметр tblock і Updlock , другий і третій оператор SELECT бере IX замки з наміром перетворити на X. Під час спроби перетворити на X буде виконано блокування IX.
-
Якщо ALLOW_SNAPSHOT_ISOLATION вимкнуто, другий та третій ЗАПИТИ отримають шість блокувань. У цій ситуації, коли шість блокувань перетворюються на X, це просто блокуючий сценарій, а не глухий кут.
Спосіб вирішення
Ця проблема була спочатку зафіксоване в цьому сукупному оновленні сервера SQL Server. Після того як ви застосуєте виправлення, SQL Server розв'яже цю проблему за допомогою запису, якщо в базі даних і запиті виявлено підказку про фіксування або нолок . Ці відомості використовуються, щоб вибрати правильний тип замків для правильної обробки ситуації, замість неправильного блокування звіту.
Сукупне оновлення 11 для SQL Server 2008 R2 SP2 /en-us/help/2926028
Кожне нове Сукупне оновлення для SQL Server містить усі поточні виправлення та всі виправлення системи безпеки, які були включені до попереднього сукупного оновлення. Ознайомтеся з найновішими сукупними оновленнями для сервера SQL Server:
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "застосовується до".