У меня есть сервер Windows 2003, на котором работает MSDTC.Я установил для него режим без проверки подлинности с разрешением входящих и исходящих настроек.Мой MSDTC работает, но он не работает для 1-й транзакции дня.При ближайшей другой транзакции она начнет работать.
Ошибка: транзакция уже была явно или неявно зафиксирована или прервана (исключение из HRESULT: 0x8004D00E).
Итак, я начал трассировку MSDTC, вфайл трассировки показывает следующее:
pid = 2144; tid = 2528; время = 12/02 / 2011-10: 49: 39.140; seq = 531; eventid = TRACING_STARTED ;; "MSDTC возобновляет трассировкудолгосрочные транзакции "
pid = 2144; tid = 2528; время = 12.02.2011: 49: 39,140; seq = 532;EventID = TRANSACTION_BEGUN;tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; "транзакция началась, описание: ''"
pid = 2144; tid = 3288; время = 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;= 4164; время = 12/02 / 2011-0: 49: 58,390; сл = 534;EventID = TRANSACTION_PROPOGATION_FAILED_CONNECTION_DOWN_FROM_REMOTE_TM; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441, "не на распространение информации транзакции для дочернего узла 'DbServer', так как соединение с удаленным менеджером транзакций пошло вниз"
1014 * PID = 2144; TID =4164; время = 12/02 / 2011-10: 49: 58,390; сл = 535;eventid = TRANSACTION_ABORTING; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; "транзакция прерывается"
pid = 2144; tid = 4164; время = 12/02/2001-10: 49: 58,390; след.= 536;eventid = RM_ISSUED_ABORT; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; "запрос на прерывание выдан менеджеру ресурсов # 1002 для зачисления транзакции # 1"
pid = 2144; tid = 2528; время = 1228;/2011-10:49:58.422;seq=537;eventid = RM_ACKNOWLEDGED_ABORT; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; "получено подтверждение запроса на прерывание от менеджера ресурсов # 1002 для зачисления транзакции # 1"
pid = 2144; tid = 2528; время =12/02 / 2011-10: 49: 58,422; сл = 538;eventid = TRANSACTION_ABORTED; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; "транзакция была прервана"
pid = 2144; tid = 3640; время = 12/02 / 2011-10: 50: 29.437;seq = 539; eventid = TRACING_STOPPED ;; "MSDTC приостанавливает отслеживание долгоживущих транзакций из-за отсутствия активности"
Я применил взлом Davy Brion отсюда, http://davybrion.com/blog/2010/03/msdtc-woes-with-nservicebus-and-nhibernate/
Также установите интервал ожидания в 10 минут в параметрах транзакции.
Если сервер еще какое-то время не будет работать, транзакция снова не удастся.
Заранее спасибо.