Ознаки
Припустімо, що ви увімкнули групи доступності AlwaysOn в інстанції Microsoft SQL ServerSQL Server 2014. Відновлення після відмови групи доступності відбувається в той час, коли основна репліка має активні транзакції. Потім з'явиться таке попереджувальне повідомлення 3303:
Примітка.
Віддалене посилення транзакції '%.*ls' (ідентифікатор 0x%016I64x %ls) розпочато на %S_DATE у базі даних '%ls' у LSN %S_LSN помилка.
У цій ситуації такі драйвери або постачальники даних не можуть отримати виняток "помилка віддаленого посилення":
- Microsoft JDBC Driver for SQL ServerSQL Server 4.0
- OLE DB Driver for SQL ServerSQL Server
- SQL ServerSQL Server Native client for OLE DB
Таким чином, клієнтський додаток, який використовує ці драйвери або постачальники, не знає, що транзакція викликає сумніви. Транзакція "під сумнівом" означає, що вона могла бути успішно зафіксована та захищена до диску, або вона була перервана та відкочена SQL Server. Якщо цю сумнівну транзакцію буде відкочено, ці драйвери або постачальники все ще можуть вважати транзакцію успішною, оскільки вони не можуть скористатися винятоком. Це може призвести до проблеми неузгодженості даних програми.
Примітка. Такі постачальники з'єднання можуть додавати виняток "помилка жорсткого захисту віддалено" для транзакцій "під сумнівом":
- Драйвер Microsoft ODBC для SQL ServerSQL Server
- SQL Server Native ClientSQL Server Native Client (ODBC)
Спосіб усунення проблеми
Вперше цю проблему вирішено в наступному сукупному оновленні SQL Server.
Сукупний пакет оновлень 5 за SQL Server 2014 р. /uk-ua/help/3011055
Відомості про сукупні оновлення для SQL ServerSQL Server
Кожне нове сукупне оновлення для SQL Server містить усі виправлення та виправлення системи безпеки, які входили до попереднього сукупного пакета оновлень. Перегляньте останні сукупні оновлення для SQL Server.
Відомості про виправленняЦе поточне виправлення вводить новий прапорець трасування 3923. Позначка трасування дає змогу SQL ServerSQL Server викликати виняток для програми при виникненні попередження 3303.
Коли виправлення застосовано, потрібно ввімкнути цей параметр, щоб вирішити цю проблему. За допомогою виправлення та позначки трасування програмі також потрібно реалізувати коди перевірки, щоб перевірити, чи транзакцію відкочено або зафіксовано після того, як виняток було зроблено.
Підтримуване поточне виправлення можна отримати від корпорації Майкрософт. Однак це виправлення призначено лише для виправлення проблеми, описаної в цій статті. Застосовуйте це виправлення лише до систем, у яких виникла ця конкретна проблема.
Якщо виправлення доступне для завантаження, угорі цієї статті в базі знань відображається розділ "Доступне завантаження виправлень". Якщо цей розділ не відображається, надішліть запит до служби обслуговування й підтримки клієнтів корпорації Майкрософт, щоб отримати виправлення.
Примітка. У разі виникнення додаткових проблем або виправлення неполадок, можливо, знадобиться створити окремий запит на обслуговування. За додаткові послуги технічної підтримки, не пов'язані з цим конкретним виправленням, плата стягується на загальних засадах. Щоб отримати повний перелік номерів телефонів служби підтримки й підтримки клієнтів корпорації Майкрософт або створити окремий запит на обслуговування, відвідайте веб-сайт корпорації Майкрософт:
/contactus/?ws=support Примітка. У формі "Доступне завантаження виправлень" відображаються мови, для яких доступне виправлення. Якщо ви не бачите свою мову, це означає, що виправлення недоступні для неї.
Необхідність перезавантаження Після застосування цього виправлення перезавантажувати комп'ютер не потрібно.
Стан
Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".