Сеанс подвески с ТМ REQUEST и плановой ручкой 0x0000

12

У нас есть периодическое событие, когда множество соединений висят на TM REQUEST (from sys.dm_os_waiting_tasks) и не прогрессируют. KILLна пострадавшем session_idничего не делает

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

Сеанс, застрявший в этом состоянии, невозможен. Нагрузка на зеркало обычная, не бурная. Как только в этом состоянии застрянет большое количество соединений, система зависает, и зеркало перестает реплицироваться (все запросы блокируются).

Кто-нибудь видел это раньше и знает, что вызывает это? В журналах ошибок ничего нет.

Томас Кейсер
источник
В каком режиме настроено зеркалирование? Каковы типы ожидания, когда эта проблема возникает? Есть ли шанс, что SQL Server настроен в fiber mode?
Кин Шах
Зеркальное отображение в режиме синхронизации. Нет волокон. Больше никто не ждет
Томас Кейсер
Что было resource_descriptionустановлено?
Томас Стрингер
Я тоже заметил это не так давно (мы запускаем async, но мы переключаем его на синхронизацию, когда выполняем аварийное переключение, исправление и т. Д.). Спид остается после полной синхронизации БД?
Subhash Pant
SPID исчезает после паузы. Но они неубиваемы, пока проблема продолжается
Томас Кейсер,

Ответы:

9

ТМ расшифровывается как Transaction Manager. Текущая команда, установленная на TM Request, означает, что поток в настоящее время обслуживает запрос DTC (Координатор распределенных транзакций), либо для зачисления в транзакцию DTC, либо из-за дефекта, либо для его подтверждения, и так далее. Распределенные транзакции не поддерживаются для зеркального отображения базы данных, поскольку оно не может гарантировать целостность транзакции. Подавите свои транзакции DTC, и это должно уйти.

stacylaray
источник
Кредит С. Ашвина, коллеги,
служба
Как бы я диагностировал, откуда это? Журналы MSDTC на сервере пусты
Томас Кейсер,
Может ли быть задействован DTC, если у меня есть транзакция с несколькими базами данных в одном экземпляре?
Томас Кейсер
@ThomasKejser - включен sp_configure 'Ad Hoc Distributed Queries'? - Может быть, какая-то система выдает транзакции между базами данных, используя OPENQUERYспециальные операторы или что-то в этом роде?
Макс Вернон
1
В транзакциях между базами данных используется тот же фундаментальный код, что и в транзакциях DTC. Основным отличием является отсутствие у DTC менеджера координации. Вместо этого SQL Server выбирает самый низкий DBID в транзакции, чтобы быть координатором транзакции.
stacylaray
0

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

stacylaray
источник