Перейти до основного
Підтримка
Вхід
Вхід за допомогою облікового запису Microsoft
Увійдіть або створіть обліковий запис.
Вітаємо,
Виберіть інший обліковий запис.
У вас є кілька облікових записів
Виберіть обліковий запис, за допомогою якого потрібно ввійти.

Ознаки

Якщо ви використовуєте дзеркальне відображення бази даних у Microsoft SQL Server 2012 або Microsoft SQL Server 2014, ви можете вразити умову, що відповідають умовам, і віддзеркалення бази даних, що входить до стану призупинено.

Причина

Ця проблема виникає через те, що під час виділення нової сторінки SQL Server отримує код X на новій сторінці. На сервері SQL Server буде поставлено hobt_id ("купа або B-Tree ID"), до якої нова сторінка належить до запиту на блокування. Але SQL Server не може поставити hobt_id в журналі віддзеркалення, а результати в різних режимах блокування між основним і дзеркалом. Цю інформацію можна докладно пояснити таким чином:

  1. На сторінці P1 Тримайте IX Lock.

  2. T2. виконайте розділення сторінки на P1, виділіть нову сторінку P2, а системна транзакція TX використовується тут, вона містить блокування X у P2. Тут SQL Server не ставив hobt_id в журналі віддзеркалення.

  3. TX робить блокування перенесення для T1 для переміщення IX Lock з P1 до P2.

  4. TX скоєно, тепер T2 може використовувати сторінку P2 і T2 отримати інший IX Lock на сторінці P2.

  5. T1 скоєно, тепер T2 – це єдиний, хто проводить IX Lock у P2.

  6. Після того, як ви вставляєте один із цих версій, після цього в головному, T2, що випускає x у P2, але на дзеркалі, під час блокування ескалація, T2 не випустили IX Lock.

  7. Після багатьох видалення сторінка P2 стала порожньою та девиділена.

  8. T3 потрібна нова сторінка, і це відбувається для виділення P2, для цього потрібно, щоб X LOCK, але на дзеркалі цей крок не вдалася через крок 6.

На дзеркалі крок 6 не Вивільніть IX LOCK, оскільки hobt_id в блоці блокування неправильний. Ця неправильна hobt_id виникає під час кроку 2, а через SQL Server не вдається поставити hobt_id в журналі віддзеркалення. зазвичай немає жодних проблем, тому що TX на кроці 2 дуже коротка, а блок блокування з неправильним hobt_id буде випущено, коли вона виконує. Однак через блокування перенесення в step3 і наступних кроків (4 та 5) цей блок блокує неправильний hobt_id і, нарешті, спричиняє проблему. У основному немає цієї проблеми, оскільки він використовує правильне hobt_id на кроці 2. Але запис журналу не має правильного hobt_id.

Кожне нове Сукупне оновлення для SQL Server містить усі поточні виправлення та всі виправлення системи безпеки, які були включені до попереднього сукупного оновлення. Ознайомтеся з найновішими сукупними оновленнями для сервера SQL Server:

Інші способи вирішення

Щоб вирішити цю проблему, повторно Ініціалізуйте дзеркало, щоб завершити стан призупиненого стану.

Стан

Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "застосовується до".

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.

Чи ця інформація була корисною?

Наскільки ви задоволені якістю мови?
Що вплинуло на ваші враження?
Натиснувши кнопку "Надіслати", ви надасте свій відгук для покращення продуктів і служб Microsoft. Ваш ІТ-адміністратор зможе збирати ці дані. Декларація про конфіденційність.

Дякуємо за відгук!

×