Тест Dtcping успешно пройден, но связь с базовым диспетчером транзакций все еще не выполнена - PullRequest
8 голосов
/ 17 августа 2011

Инструмент DTCPing говорит, что все должно быть хорошо.Фактическое исключение:

System.Transactions.TransactionManagerCommunicationException:

Не удалось установить связь с соответствующим менеджером транзакций.---> System.Runtime.InteropServices.COMException: диспетчеру транзакций MSDTC не удалось передать транзакцию диспетчеру транзакций назначения из-за проблем со связью.Возможные причины: брандмауэр присутствует и у него нет исключения для процесса MSDTC, две машины не могут найти друг друга по их именам NetBIOS или поддержка сетевых транзакций не включена для одного из двух менеджеров транзакций.(Исключение из HRESULT: 0x8004D02A)

Служба работает на ВМ.Другие серверы могут выполнять распределенные транзакции, поэтому окно БД настроено правильно.

Ответы [ 2 ]

3 голосов
/ 22 августа 2011

Здесь есть хорошая статья на эту тему: Устранение неполадок с MSDTC .Первоначально он был написан для BizTalk Server, но применяется и на другом сервере.

Поскольку вы работаете с VPC, возможно, что DTC использует некоторые идентификаторы для другого компьютера в той же сети.Пожалуйста, ознакомьтесь с главой «Убедитесь, что MSDTC назначено уникальное значение CID» в этой статье (см. Также http://blogs.msdn.com/b/johnlee/archive/2008/09/09/msdtc-on-virtual-machines.aspx),, хотя я считаю, что DTCPing должен сообщить вам об этом ... Вы также можете попробовать msdtc -uninstall и msdtc -installчтобы исправить это.

Вы также должны проверить, не использует ли ваш сервер какую-либо VPN или технологию шифрования. Я помню, это может вызвать проблемы.

2 голосов
/ 27 августа 2011

Кто-то уже упомянул уникальные идентификаторы, убедитесь, что вы делаете это, прежде чем делать что-либо еще, я видел, как люди взрывают ОЧЕНЬ много времени, идя по другим маршрутам, только чтобы узнать, в чем заключалась вся проблема.

Тем не менее я обнаружил, что инструмент под названием DTCTester более полезен, чем DTCPing. http://support.microsoft.com/kb/293799

Это немного сложнее в использовании, чем DTCPing, но он также тестирует гораздо ближе к тому, что вы обычно делаете, что дает вам более чистый результат теста.

* Убедитесь, что все возможные брандмауэры / программы фильтрации отключены и / или не существуют *

Не могу не подчеркнуть этого достаточно, однажды я потратил почти 90 минут, пытаясь убедить клиента в том, что его программное обеспечение VPN действует как персональный брандмауэр и блокирует входящие сокеты. Как только он отключил его, проблемы исчезли. (в качестве программного обеспечения использовался Cisco VPN Client, настройка была «Stateful Firewall (Always On)» - да, он ВСЕГДА включен :))

Помните, что DTC является двусторонним трафиком, поэтому это должно быть верно для обеих сторон, и вы также должны убедиться, что на обеих машинах разрешен «Включить доступ по DTC». Я также обнаружил, что при настройке DTC оба блока синхронизированы, как правило, обеспечивает надежное взаимодействие.

...