Симптоми
Обмислете следния сценарий:
-
Имате база данни с опции ALLOW_SNAPSHOT_ISOLATION и READ_COMMITTED_SNAPSHOT разрешени в Microsoft SQL Server 2008 R2.
-
Изпълнявате командата Select , която съдържа TABLOCK и UPDLOCK загатвания за таблица в базата данни.
-
Командата Select е увита в изрично започва трън, но извършването на тран не се изпълнява.
-
Още две от същите заявки, които са започнати със същите намеци за заявки, са в изричната транзакция.
При този сценарий, когато е извършено първото заявка, една от другите заявки ще бъде безизходица.
Причина
Проблемът възниква, защото неправилно съобщава SQL Server в един от следните сценарии:
-
Когато ALLOW_SNAPSHOT_ISOLATION и READ_COMMITTED_SNAPSHOT са разрешени за база данни, множество заявки спрямо една и съща транзакция могат да бъдат докладвани като неправилни неразрешени случаи, когато една от тях е завършена.
-
Когато ALLOW_SNAPSHOT_ISOTION е разрешена и се използват намеците TABLOCK и UPDLOCK , втората и третата инструкция за избиране заемат IX брави с намерението да се конвертират в X. Бутонът IX блокира, когато е направен опит за преобразуване в X.
-
Когато ALLOW_SNAPSHOT_ISOLATION е забранена, втората и третата заявка ще получат шест Lock. В този случай, когато SIX Lock бъде конвертиран в X, това е само блокиращ сценарий, а не безизходица.
Решение
Проблемът е коригиран първо в следващата сборна актуализация на SQL Server. След като приложите актуалната корекция, SQL Server отстраните проблема чрез записване, ако за базата данни и заявката е срещнало намек за ангажиране или NOLOCK . Тази информация се използва, за да се избере правилният тип брави, за да се обработи правилно ситуацията, вместо да се намира в безизходица.
Кумулативна актуализация 11 за SQL Server 2008 R2 SP2 /en-us/help/2926028
Всяка нова сборна актуализация за SQL Server съдържа всички поправки и всички корекции на защитата, които са били включени в предишната сборна актуализация. Вижте последните сборни актуализации за SQL Server:
Състоянието
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".