Транзакция не работает, когда два удаленных соединения SQL - PullRequest
2 голосов
/ 03 июня 2009

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

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

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

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

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

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

Ответы [ 5 ]

2 голосов
/ 03 июня 2009

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

2 голосов
/ 03 июня 2009

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

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

  1. MSDTC на MSDN
  2. Устранение неполадок MSDTC
  3. MSDTC и проблемы с брандмауэром
2 голосов
/ 03 июня 2009

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

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

net start msdtc

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

1 голос
/ 03 июня 2009

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

MSDTC Issue

0 голосов
/ 03 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...