Транзакция не работает при двух удаленных подключениях sql

Я использую объект подключения Two SQL Server в своем проекте консольного приложения C #. Мне нужно сделать это в одной транзакции, поэтому я использовал Transactionscope (распределенная транзакция)

Я не могу использовать соединение в области транзакций. Отображается ошибка.

MSDTC на сервере недоступен.

Как я могу решить .... И одно соединение sql является удаленным сервером, а другое - локальным сервером.

Примечание. - Служба msdtc уже запущена.

Сервер запустился на обеих машинах. Тем не менее я столкнулся с проблемой. Нужно ли мне отключать брандмауэр на компьютерах с локальной интрасетью?


person web dunia    schedule 03.06.2009    source источник
comment
Убедитесь, что MSDTC запущен как на вашем удаленном, так и на локальном сервере.   -  person Joseph    schedule 03.06.2009


Ответы (5)


Каждый раз, когда вы выполняете распределенную транзакцию, координатор распределенных транзакций Microsoft должен работать на вашем локальном компьютере и на всех серверах, которые участвуют в транзакции. Если у вас есть брандмауэры, вам также необходимо убедиться, что вы ограничили порты, на которых обменивается данными MSDTC, и добавили соответствующие правила в конфигурацию брандмауэра, чтобы разрешить соединения - я считаю, что ему нужен доступ к portmapper, а также конкретный порт. диапазон, который вы выбрали для RPC. Существуют также различные параметры безопасности для MSDTC, которые необходимо синхронизировать, которые управляют тем, как выполняется проверка подлинности между серверами.

Вот несколько ссылок, которые могут быть полезны:

  1. MSDTC в MSDN
  2. Устранение неполадок MSDTC
  3. Проблемы с MSDTC и брандмауэром
person tvanfosson    schedule 03.06.2009

Запустите службу MSDTC.

В командной строке:

net start msdtc

Или из Сервисов MMC. Найдите «Координатор распределенных транзакций» и нажмите «Пуск».

person Mike Chaliy    schedule 03.06.2009

Если у вас возникают проблемы с правильной работой DTC (особенно когда задействован брандмауэр или кластер SQL), тогда DTCPing - отличный инструмент (от Microsoft) для его идентификации. Обратите внимание, что (IIRC) вам нужно иметь возможность DTCPing в обоих направлениях.

person Marc Gravell    schedule 03.06.2009

У меня была такая же проблема в проекте, над которым я недавно работал. К сожалению, у меня не было прав на запуск MSDTC, как описано в другом ответе. Если вы находитесь в такой же ситуации, я бы посоветовал прочитать вопрос, который я недавно опубликовал по этой проблеме.

Проблема с MSDTC

person Joseph    schedule 03.06.2009

Просто идея, вы, наверное, уже пробовали это. Если вы подтвердили, что служба MSDTC работает, просматривали ли вы журналы событий на машинах, на которых запущены службы? Здесь вы можете найти информацию об ошибках в службах.

person Niall Connaughton    schedule 03.06.2009