Доступ к сети отключен в MSDTC - PullRequest
0 голосов
/ 14 декабря 2010

Я использую System.Transactions.TransactionScope() в модульном тесте, чтобы вставить запись, попытаться прочитать ее и разрешить откат области действия транзакции, чтобы не оставить следов в базе данных.

1  var rep = new RunRepository();
2  using (var scop = new TransactionScope())
3  {
4     var runId = rep.SaveSwrsRun([Run data elements]); // returns PK RunId
5     var run = rep.FetchSwrsRun(runId);  // returns an object of type Run
6     Assert.IsNotNull(run);
7  }

В строке 5 выдается исключение с сообщением об ошибке

System.Transactions.TransactionManagerCommunicationException: доступ к сети для диспетчера распределенных транзакций (MSDTC) отключен.Включите DTC для доступа к сети в конфигурации безопасности для MSDTC с помощью инструмента администрирования служб компонентов.

Я проверил инструмент администрирования служб компонентов, и моя рабочая станция выполняет DTC включен.Я также обнаружил это Проблемы с областью действия транзакции MSDTC * Поток 1014 *, который направляет меня к Как включить сетевой доступ по DTC

Но когда я установил SQL-сервер, флажок удаленного доступа былуже проверил.У кого-нибудь еще есть другие идеи?

Подробнее ... Когда я заставляю репозиторий удерживать то же соединение и не возвращаюсь в пул для другого для второго оператора Sql, это работает.По-видимому, использование другого соединения для второго SQL-отчета вызывает DTC для перевода транзакции в «распределенный режим» (чего не следует делать, поскольку оба SQL-оператора находятся на одном сервере и используют одну и ту же строку подключения), а неупомянуть, что даже если это произойдет, это (распределенный режим) все равно должно работать в любом случае.

1 Ответ

0 голосов
/ 02 августа 2012

Если ваша служба DTC запущена, нажмите «Настройка безопасности» и установите флажок «Доступ по сети DTC» в области настроек безопасности. Смотрите изображение ниже. Network DTC Access

...