Підвішування сесії з TM REQUEST та ручка плану 0x0000


12

У нас відбувається періодична подія, коли безліч з’єднань висить на TM REQUEST (від sys.dm_os_waiting_tasks) і не робить ніякого прогресу. KILLна уражених session_idнічого не робить

Сервер виконує дзеркальне відображення бази даних (2008R2). Призупинення та відновлення дзеркального виправлення усуває проблему, коли це відбувається.

Сеанс, затриманий у такому стані, не можна використовувати. Навантаження на дзеркало звичайне, а не лопнуте. Після того, як велика кількість з'єднань застрягла в такому стані, система замерзає і дзеркало перестає реплікуватися (усі запити блокуються).

Хтось бачив це раніше і знає, що це викликає? У журналах помилок немає нічого.


У якому режимі налаштовано дзеркальне відображення? Які типи очікування виникають при виникненні цієї проблеми? Будь-який шанс, що налаштований SQL Server fiber mode?
— Кін Шах

Дзеркальне відображення знаходиться в режимі синхронізації. Без волокон. Більше не чекає
— Томас Кейсер

Що було resource_descriptionвстановлено?
— Томас Стрінгер

Я помітив це теж не так давно (ми запускаємо асинхронізацію, але ми змінюємо її для синхронізації, коли робимо відмову чи виправлення тощо). Чи залишається шпід після синхронізації БД?
— Субгаш Пант

SPID зникають після паузи. Але вони не піддаються вирішенню, поки проблема не виникає
— Томас Кейсер

Відповіді:


9

TM означає Менеджер транзакцій. Поточна команда, встановлена ​​на запит TM, означає, що поток в даний час обслуговує запит DTC (розподіленого координатора транзакцій) або для включення в транзакцію DTC, або дефект від неї, або здійснення її чи інше. Розподілені транзакції не підтримуються для дзеркального відображення баз даних, оскільки це не може гарантувати цілісність транзакцій. Придушіть угоди DTC, і це повинно піти.


Кредит С. Ешвін, колега, Підтримка Microsoft SQL
— stacylaray

Як би я поставив діагноз, звідки це відбувається? Журнали MSDTC на сервері порожні
— Thomas Kejser

Чи міг би DTC долучитися, якщо я маю трансакцію міжбазових баз даних у тому ж екземплярі?
— Томас Кейсер

@ThomasKejser - sp_configure 'Ad Hoc Distributed Queries'увімкнено? - Можливо, якась система видає міжбазові транзакції, використовуючи OPENQUERYспеціальні заяви або щось таке?
— Макс Вернон

1
Перехресні транзакції баз даних використовують той же основний код, що і транзакції DTC. Основна відмінність - відсутність координатора DTC координації. Натомість SQL Server вибирає найнижчий DBID транзакції в якості координатора транзакцій.
— stacylaray

0

Service Broker використовує диспетчер транзакцій SQL Server замість координатора розподілених транзакцій Microsoft (MS DTC). Трансакція відбувається не через екземпляри, а всередині екземпляра. Використовуєте сервіс-брокер?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.