Преминаване към основното съдържание
Поддръжка
Влизане с Microsoft
Влезте или създайте акаунт.
Здравейте,
Изберете друг акаунт.
Имате няколко акаунта
Изберете акаунта, с който искате да влезете.

Симптоми

Когато използвате дублиране на бази данни в Microsoft SQL Server 2012 или Microsoft SQL Server 2014, е възможно да сте ударили условието за твърдение и огледалото на базата данни да влезе в временно прекратено състояние.

Причина

Проблемът възниква, защото при разпределяне на нова страница SQL Server получава X Lock на новата страница. SQL Server ще сложи hobt_id (ИД на куп или B-Tree), към който принадлежи новата страница, в заявката за заключване. SQL Server обаче не може да изложи hobt_id в регистрационен файл за огледално и води до различно поведение на заключване между основния и огледалния. Това може да се обясни подробно по следния начин:

  1. T1 задръжте IX Lock на страница P1.

  2. T2 Направете страницата разделена на P1, Разпределете нова страница P2, за да се използва системна транзакция TX тук, той има X Lock на P2. Тук SQL Server не е сложил hobt_id в регистрационен файл за огледално копие.

  3. TX извършва заключване на мигрирането за T1, за да мести IX Lock от P1 към P2.

  4. TX ангажиран, сега T2 може да използва Page P2 и t2 Получете друг IX Lock на страница P2.

  5. T1 е извършено, сега T2 е единственият човек, който държи IX Lock на P2.

  6. След много вмъквания се появява заключване, в основния бутон T2 пуска IX на P2, но върху огледалото, при ескалация на ключалката, T2 не освободи IX Lock.

  7. След много изтривания страницата P2 става празна и е отчасти.

  8. Т3 се нуждае от нова страница и това се случва, за да разпредели P2, това изисква X Lock, но в огледалото тази стъпка е неуспешна, защото е стъпка 6.

В огледалото стъпка 6 не освобождава IX Lock, тъй като hobt_id в блока за заключване е неправилен. Тази неправилна hobt_id е по време на стъпка 2 и поради това, че SQL Server не поставя hobt_id в регистрационен файл за дублиране. обикновено не виждате никакъв проблем, защото TX в стъпка 2 е много къс и заключването с неправилна hobt_id ще бъде издадено при извършване на това. Но поради заключени миграции в стъпка3 и следващите стъпки (4 и 5), този блок за заключване с неправилна hobt_id е запазен и накрая създава проблема. Главният не разполага с този проблем, защото използва правилна hobt_id в стъпка 2. Но регистрационният запис няма правилни hobt_id.

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

Заобиколно решение

За да заобиколите проблема, преинициализирайте огледалния образ, за да прекратите временно спряното състояние.

Състоянието

Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.

Беше ли полезна тази информация?

Доколко сте доволни от качеството на езика?
Какво е повлияло на вашия потребителски опит?
Като натиснете „Подаване“, вашата обратна връзка ще се използва за подобряване на продуктите и услугите на Microsoft. Вашият ИТ администратор ще може да събира тези данни. Декларация за поверителност.

Благодарим ви за обратната връзка!

×