У меня есть сервер Windows 2003, на котором работает MSDTC. Я установил для него режим без аутентификации, разрешив входящие-исходящие настройки. Мой MSDTC работает, но не выполняет первую транзакцию дня. При следующей транзакции он начнет работать.
Ошибка: транзакция уже была явно или неявно зафиксирована или прервана (исключение из HRESULT: 0x8004D00E).
Итак, я начал трассировку MSDTC, в файле трассировки это показывает:
pid = 2144; tid = 2528; time = 12/02/2011-10: 49: 39.140; seq = 531; eventid = TRACING_STARTED ;; "MSDTC возобновляет отслеживание давно существующих транзакций"
pid = 2144; tid = 2528; time = 12.02.2011-10: 49: 39.140; seq = 532; eventid = TRANSACTION_BEGUN; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; "транзакция началась, описание: ''"
pid = 2144; tid = 3288; time = 12.02.2011-10: 49: 39.140; seq = 533; eventid = RM_ENLISTED_IN_TRANSACTION; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; "менеджер ресурсов № 1002 внесен в список транзакций № 1. RM guid = '4e45a393-b02a-42bf-8f66-62bcb17fee8e'"
pid = 2144; tid = 4164; time = 12.02.2011-0: 49: 58.390; seq = 534; eventid = TRANSACTION_PROPOGATION_FAILED_CONNECTION_DOWN_FROM_REMOTE_TM; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; "не удалось передать транзакцию дочернему узлу DBSERVER", потому что соединение с удаленным диспетчером транзакций прервалось
pid = 2144; tid = 4164; time = 12.02.2011-10: 49: 58.390; seq = 535; eventid = TRANSACTION_ABORTING; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; "транзакция прерывается"
pid = 2144; tid = 4164; time = 12.02.2011-10: 49: 58.390; seq = 536; eventid = RM_ISSUED_ABORT; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; "запрос на прерывание, выданный диспетчеру ресурсов № 1002 для включения транзакции № 1"
pid = 2144; tid = 2528; time = 12.02.2011-10: 49: 58.422; seq = 537; eventid = RM_ACKNOWLEDGED_ABORT; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; "получено подтверждение запроса на прерывание от диспетчера ресурсов №1002 для включения транзакции №1"
pid = 2144; tid = 2528; time = 12.02.2011-10: 49: 58.422; seq = 538; eventid = TRANSACTION_ABORTED; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; "транзакция была прервана"
pid = 2144; tid = 3640; time = 12/02/2011-10: 50: 29.437; seq = 539; eventid = TRACING_STOPPED ;; "MSDTC приостанавливает отслеживание долгоживущих транзакций из-за отсутствия активности"
Я применил взлом Дэви Бриона отсюда, http://davybrion.com/blog/2010/03/msdtc-woes-with-nservicebus-and-nhibernate/
Также установите интервал ожидания 10 минут в параметрах транзакции.
Если сервер снова некоторое время бездействует, транзакция завершится ошибкой.
Заранее спасибо..