У меня есть приложение Visual Forms 2010 Windows Forms, в котором я запускаю транзакцию с использованием класса TransactionScope. Затем я получаю сообщение из очереди сообщений Sql Server Broker Services, которая работает нормально. Затем я пытаюсь вызвать хранимую процедуру из той же базы данных, вызвав мой уровень доступа к данным, который представляет собой набор данных Visual Studio (файл xsd). Когда я делаю этот второй вызов в базу данных, я получаю следующее сообщение об ошибке:
Диспетчеру транзакций MSDTC не удалось получить транзакцию из диспетчера исходных транзакций из-за проблем со связью. Возможные причины: брандмауэр присутствует и у него нет исключения для процесса MSDTC, две машины не могут найти друг друга по их именам NetBIOS или поддержка сетевых транзакций не включена для одного из двух менеджеров транзакций. (Исключение из HRESULT: 0x8004D02B).
Я видел несколько постов в Интернете, в которых говорится о включении доступа по DTC через dcomcnfg.exe и о том, как DTC может обмениваться данными через брандмауэр Windows. Я сделал эти вещи, и до сих пор имею эту проблему. Я знаю, что наш удаленный сервер баз данных настроен на включение доступа DTC, потому что мы используем аналогичные транзакции в других проектах, созданных с помощью Visual Studio 2008 на Windows XP и Vista. Я думаю, что в Windows 7 и Visual Studio 2010 есть что-то конкретное, вызывающее эту проблему, но я не смог выяснить, что это такое. Может кто-нибудь помочь с этой проблемой?
Я только что видел сообщение в Интернете от другого программиста, имеющего эту проблему (http://www.pcreview.co.uk/forums/thread-3977150.php), он говорит, что он отлично работает на Windows 7 - x86, но получает эту ошибку на Windows 7 - x64. Я запускаю 64-разрядная версия Windows 7, кто-нибудь знает, есть ли проблемы с MSDTC в Windows 7 - 64-разрядная версия?