10

Я размещенные мой WebAPP на сервере 1 и свою базу данных на сервере 2Менеджер транзакций MSDTC не удалось вытащить сделку от менеджера источника транзакций из-за проблем со связью

Но им получить следующее сообщение об ошибке

«Ошибка связи с основным менеджером транзакций».

Я гугле и нашел пост, в котором упоминается, что вопрос о DTC (Distributed Transaction) Я включил DTC на server2 (сервер БД) и сделал исключение из этого брандмауэра.

enter image description here

enter image description here

Но все же ошибка.

Вот полный трассировки стека

Сообщение: System.Transactions.TransactionManagerCommunicationException: Связь с основным менеджером транзакций не удалось. ---> System.Runtime.InteropServices.COMException: Менеджер транзакций MSDTC не смог вытащить транзакцию из диспетчера транзакций источника из-за проблем связи. Возможные причины: существует брандмауэр, и у него нет исключения для процесса MSDTC, обе машины не могут найти друг друга по именам NetBIOS или поддержка сетевых транзакций не включена для одного из двух менеджеров транзакций. (Исключение из HRESULT: 0x8004D02B) на System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction (UInt32 propgationTokenSize, Byte [] propgationToken, IntPtr managedIdentifier, Guid & transactionIdentifier, OletxTransactionIsolationLevel & IsolationLevel, ITransactionShim & transactionShim) на System.Transactions.TransactionInterop. GetOletxTransactionFromTransmitterPropigationToken (Byte [] propagationToken)

Пожалуйста, советы

+0

У меня такая же проблема иногда в окнах 2088, и я не знаю, как ее решить. Иногда это случается. :( – rsan

+1

Вы пытались настроить его также на сервере приложений? Вы настраиваете как входящие, так и исходящие. Это решило мою проблему. –

ответ

1

Вещи, чтобы проверить:

  • Вы установили эту конфигурацию на обоих серверах?
  • Являются ли оба сервера членами одного домена?
  • Вы проверили журнал событий?
14

У нас была такая же ситуация, и более одного раза. Каждый раз, это был один из следующих действий:

  1. IP-адрес в DNS для сервера устарел (как сказано в сообщении об ошибке: «две машины не могут найти друг друга по именам NetBIOS») , Вы можете проверить, так ли это, попробовав ping servername с одного сервера на другой в командной строке. Если ping по имени терпит неудачу и ping по IP успешно (или ping по имени возвращает неправильный IP-адрес), вы должны поговорить с системными администраторами, чтобы посмотреть DNS/DHCP.

  2. Серверы создаются как изображение предварительно сконфигурированного сервера (например, если вы работаете с виртуальными машинами и вместо того, чтобы выполнять новую установку для каждого из серверов, вы просто клонируете изображение).Это проблема, потому что DTC имеет внутренний «Идентификатор» - и в случае клонирования изображений обе ваши установки теперь имеют одинаковый идентификатор DTC и не смогут общаться друг с другом. Решение состоит в том, чтобы просто удалить и установить DTC снова.

Надеюсь, это поможет.

+1

# 2 работал отлично! Спасибо! –

+0

# 1 произошло с двумя разными сетями. спасибо. –

Смежные вопросы