Вопрос или проблема
У меня недавно возникла проблема, при которой MSDTC не удавалось запуститься.
Ошибка в командной строке при запуске net start msdtc
указывала на проблемы с конфигурацией.
Я зашел в реестр и установил настройки конфигурации на те же значения, что и в стандартной установке MSDTC.
После этого MSDTC удалось запустить, однако локальный DTC кажется отсутствующим в компонентах служб.
Я следовал шагам здесь.
net stop msdtc
msdtc -uninstall
msdtc -install
net start msdtc
И шагам здесь.
Что аналогично вышеуказанной процедуре, но также включает удаление конфигурации реестра.
Я также восстановил резервную копию реестра и перезагрузил систему.
И перезагрузился после переустановки.
Пока что, что бы я ни делал, локальный DTC скрывается от меня.
Кто-нибудь знает, что здесь может быть неправильно, и как переустановить локальный DTC?
ОБНОВЛЕНИЕ:
Пока я пытался найти больше способов установки локального DTC, я обнаружил, что командлеты Powershell на самом деле полностью отсутствуют.
Если у кого-нибудь есть решение/причина для этого, это может мне помочь.
ОБНОВЛЕНИЕ 2:
По просьбе другой темы я повторил процедуру, убеждаясь, что командная строка запущена от имени администратора.
После выполнения команд в просмотрщике событий были найдены следующие события:
Служба Microsoft Distributed Transaction Coordinator была
успешно удалена.
Служба Microsoft Distributed Transaction
Coordinator успешно установлена.
Обновление 3:
Я обнаружил, что в первый раз при открытии Компоненты служб
после новой установки и при щелчке по папке Distributed Transaction Coordinators
, следующая ошибка появляется в журнале приложений:
Менеджер подключений MS DTC не может зарегистрироваться в RPC для использования одного из LRPC, TCP/IP или UDP/IP.
Пожалуйста, убедитесь, что RPC настроен правильно. Если в реестре настроен ключ “ServerTcpPort” (значение DWORD под HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC для локального экземпляра DTC или под кластерным разделом для кластерного экземпляра DTC), пожалуйста, проверьте, является ли настроенный порт действительным и не используется ли он другим компонентом.
Подробности ошибки: hr = 0x80070057, d:\w7rtm\com\complus\dtc\dtc\cm\src\iomgrsrv.cpp:2523, CmdLine: “C:\Windows\system32\mmc.exe” “C:\Windows\system32\comexp.msc” , Pid: 6096
Что, кажется, указывает на проблему с брандмауэром, но полное отключение брандмауэра и начало процедуры с пункта 1 не помогло.
Я начинаю думать, что единственный доступный вариант – уничтожить сервер с орбиты.
Если вы настраиваете небольшой диапазон портов RPC, он может быть полностью занят, и MSDTC не удается получить порт, так как все порты заняты. Я бы удалил это ограничение RPC и использовал бы стандартный динамический диапазон портов 49152-65535.
Если вы настроите MSDTC на использование фиксированного порта с ServerTcpPort, лучше зарезервировать этот порт и избегать использования порта в динамическом диапазоне RPC, чтобы избежать использования этого порта другими приложениями перед запуском MSDTC. Например, им назначены порты из стандартного диапазона портов 49152-65535, а MSDTC настроен на использование, например, порта 50000. Обычно я рекомендую установить локальный MSDTC на использование фиксированного порта ниже динамического диапазона, но значительно выше известных нижних портов, например, 30001 (ServerTcpPort + резервирование), а затем кластерные фиксированные порты MSDTC на 30002+. Таким образом, вы также можете фильтровать сетевые трассировки для быстрого устранения неполадок, вместо того чтобы постоянно использовать новый динамический порт.
Ответ или решение
Когда вы имеете дело с пропажей локального Distributed Transaction Coordinator (DTC) на сервере Windows Server 2008 R2, это может быть весьма разочаровывающая проблема, особенно учитывая, что вам уже удалось перезапустить службу MSDTC после исправления конфигурации в реестре. Давайте разберем этот вопрос более подробно и предложим возможные решения на основании предоставленной информации.
Теория
Microsoft Distributed Transaction Coordinator (MSDTC) — это компонент Windows, ответственный за координацию транзакций, охватывающих несколько ресурсов, таких как базы данных, очереди сообщений и файловые системы. Когда локальный DTC не отображается в компонентных службах, это может быть связано с несколькими проблемами конфигурации, в которых играют роль сетевые настройки, регистрационные данные, а также службы RPC (Remote Procedure Call).
Проблемы и возможные причины
-
Некорректные настройки конфигурации: Есть вероятность, что настройки в вашем реестре могли быть повреждены или просто находятся в некорректном состоянии, препятствующем нормальной работе DTC.
-
Проблемы с RPC: Блокировка портов или неверная конфигурация RPC может помешать MSDTC успешно зарегистрироваться и начать работу, как об этом свидетельствует ошибка в журнале приложений.
-
Конфликты портов: Если ServerTcpPort для MSDTC использует порт, который уже занят другой службой или попадает в пределы ограниченного диапазона RPC, это может помешать корректному запуску.
Пример
В вашем случае, после выполнения стандартной процедуры переустановки MSDTC, вы столкнулись с проблемой отсутствия локального DTC в интерфейсе Component Services, даже при том, что служба якобы установлена и запущена успешно. Появившиеся ошибки указывали на проблему с регистрацией в системе RPC, что заставляет предполагать конфликты в сетевых параметрах.
Применение
С учетом вышеизложенного, вот шаги, которые вы можете предпринять для решения проблемы:
-
Проверка конфигурации RPC и DTC: Убедитесь, что диапазон динамических портов RPC не является слишком узким. Вы можете настроить более широкий диапазон портов, например, 49152-65535, чтобы избежать конфликтов.
-
Настройка фиксированного порта: Установите фиксированный порт для MSDTC ниже динамического диапазона RPC, например, 30001. Это можно сделать, добавив ключ реестра
ServerTcpPort
и установив для него значение. -
Резервирование порта: Если назначаете фиксированный порт, убедитесь, что эти порты зарезервированы и исключены из использования другими приложениями.
-
Проверка брандмауэра: Даже если отключение брандмауэра не помогло, убедитесь, что необходимые порты открыты для использования. Гибкая настройка может усилить безопасность при предотвращении непредвиденных конфликтов.
-
Дополнительный аудит: Проверьте журнал событий и другие логи на наличие других ошибок или конфликтов, которые могут препятствовать работе MSDTC.
-
Восстановление системы: Как крайняя мера, если проблема не решается, рассмотрите возможность использования точки восстановления системы или переустановки ОС.
-
Обновления и патчи: Убедитесь, что все обновления и патчи для Windows Server 2008 R2 были установлены, так как они могут содержать исправления для подобных проблем.
Следуя этим рекомендациям, вы сможете более точно определить причину проблемы и найти соответствующее решение для ваших нужд. Трудности с конфигурацией и взаимодействием MSDTC и RPC встречаются не так уж редко, особенно в старых системах, и требуют комплексного подхода для успешного разрешения.