KB3011807 – ПОПРАВКА: Голяма верига от блокирания възниква, когато използвате репликация чрез обединяване в SQL Server 2012 или SQL Server 2014

Отнася се за
SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Симптоми

Да предположим, че използвате репликация чрез обединяване в Microsoft SQL Server 2012 или Microsoft SQL Server 2014. Като част от процеса на синхронизация, агентът за обединяване създава ново поколение в сесия. Ако по някаква причина, като блокиране или време на изчакване, транзакцията, създаваща генериране, бъде избрана като жертва на блокиране и транзакцията бъде анулирана, може да има голяма верига от блокиране за заключването на приложението MSinternal_makegeneration_inprog предстоящо поколение и споменатата по-рано сесия се показва като блокиращ главата.

Причина

Заключването на приложението, което се използва за защита на процеса на създаване на генерация, е заключване на приложението на ниво сесия. Когато бъде открито блокиране по време на процеса на създаване на генериране, само транзакцията се анулира, но сесията не се изключва. За да освободите заключване на приложение на ниво сесия, сесията трябва да излезе. Следователно, поради дизайна на логиката за повторен опит (сесията няма да бъде отписана по време на генерирането, което прави неуспех при репликация на обединяване), ако първото поколение, правещо блокиране, блокирането на сесията (MSinternal_makegeneration_inprog), което получи, няма да бъде освободено по време на връщане към стабилно състояние на транзакцията. Това води до блокиране на веригата от заявки за заключване в процеса на създаване на предстоящо поколение. Блокирането на главата се показва като първо поколение заявка за правене, която е неуспешна с блокиране.
Преди горещата корекция SQL Server изчиства заключването само за успешен процес на създаване на генерации. То оставя заключване на изолирано приложение за сесия преди излизане от сесията, ако се получи блокиране.

Решение

Този проблем е отстранен за първи път в следващата кумулативна актуализация на SQL Server.

Сборна актуализация 5 за SQL Server 2014 г. /en-us/help/3011055

Сборна актуализация 3 за SQL Server 2012 SP2 /en-us/help/3002049

За кумулативните актуализации за SQL Server

Всяка нова кумулативна актуализация за SQL Server съдържа всички актуални поправки и корекции на защитата, които са били включени в предишната кумулативна актуализация. Прегледайте последните кумулативни актуализации за SQL Server:

      

Състояние

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.