Підвішування сесії з 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.