Ошибка запуска службы MSDTC EventID 4691 "The run-time environment was unable to initialize for transactions required to support transactional components. Make sure that MS-DTC is running. (DtcGetTransactionManagerEx(): hr = 0x80004005)"

MSDTC service cant startЭто вторая история, ноги у которой, судя по всему, растут из первой. Дело случилось на одном из ранее описанных виртуальных серверов на базе Windows Server 2012 R2, имевших проблему первичной инициализации в механизме OOBE (Out-of-Box Experience) после клонирования диска ВМ, предварительно подготовленного с помощью sysprep. После развёртывания оба сервера были успешно введены в домен Active Directory и без каких-либо сложностей сделаны участниками нового кластера Windows Failover Cluster. И всё с виду было хорошо до тех пор, пока не настало время установки агента System Center DPM на оба этих сервера.

На первый виртуальный сервер агент DPM установился без вопросов, а при попытке параллельной установки на второй сервер в консоли DPM мы получили ошибку следующего вида: 

Error 313: The agent operation failed because an error occurred while running the installation program on KOM-DB02.holding.com.
Error details: Fatal error during installation (0x80070643)
Recommended action: Review the log files on KOM-DB02.holding.com: [windir]\temp\msdpm*.log and take appropriate action. Retry the operation, and if the error persists, restart the computer and then retry the operation again.

DPM Agent Installation Error 313 0x80070643

Ошибки, фигурирующие в указанном текстовом логе на виртуальном сервере ситуацию не сильно прояснили, по крайней мере очевидных для нашего уровня знаний ответов на свои вопросы мы там не нашли. Было решено проанализировать event-логи на предмет ошибок, возникающих перед ошибками развёртывания агента DPM. Выяснилось, что сопряжённой ошибкой была ошибка связанная с работой системной службы "Distributed Transaction Coordinator" (MSDTC).

Log Name:      Application
Source:        Microsoft-Windows-Complus
Event ID:      4691
Task Category: Executive
Level:         Error
Computer:      KOM-DB02.holding.com
Description:   The run-time environment was unable to initialize for transactions required to support transactional components. Make sure that MS-DTC is running. (DtcGetTransactionManagerEx(): hr = 0x80004005)

Открыв на проблемном сервере оснастку управления службами компонентов Control Panel\All Control Panel Items\Administrative Tools\Component Services (или comexp.msc), мы обнаружили, что свойства узла My Computer недоступны, а ручная попытка запуска службы MSDTC приводит к повторному появлению ошибки с кодом 4691.

Windows Component Services MSDTC not started

В результате поисков информации о возможных причинах проблем с запуском службы MSDTC была обнаружена статья: Microsoft Distributed Transaction Coordinator (MSDTC) service does not start after you run Sysprep. Хоть эта статья по описанию и не подходит к нашей версии ОС, но всё же мы решили заглянуть в реестр на предмет наличия там описанного в статье параметра:

HKLM\SOFTWARE\Microsoft\MSDTC\SysprepInProgress = 1

И такой параметр нашёлся…

MSDTC SysprepInProgress in Windows registry

Сравнение со вторым виртуальным сервером, как и с другими штатно работающими серверами, показало что в нормальной ситуации этот параметр должен иметь значение "0". И не смотря на то, что ручная установка нулевого значения не решила проблемы и служба MSDTC по прежнему не запускалась, теперь ошибки, регистрируемые в event-логе при попытке запуска, обрели несколько иной вид:

Log Name:    Application
Source:      Microsoft-Windows-MSDTC
Event ID:    4461
Level:       Error
Computer:    KOM-DB02.holding.com
Description: The MSDTC service cannot start because its contact identifiers are either missing, inaccessible, or corrupt. Running 'msdtc -uninstall' and then 'msdtc -install' from the command prompt will fix the problem. Note: Running 'msdtc -uninstall' will result in the system losing all MSDTC configuration information. Error Specifics: hr = 0x80100101, com\complus\dtc\dtc\msdtc\src\cservice.cpp:527, CmdLine: C:\Windows\System32\msdtc.exe, Pid: 1416

Было решено последовать рекомендации, данной в описании ошибки и выполнить переустановку службы MSDTC. Открыв командную строку с правами Администратора сначала выполняем команду удаления службы:

msdtc -uninstall

После выполнения этой команды служба "Distributed Transaction Coordinator" исчезнет из общего списка служб в оснастке управления службами Windows (services.msc). После этого выполняем команду повторной установки службы

msdtc -install

MSDTC services reinstallation

Служба снова появится в оснастке управления службами Windows. Только теперь после повторной установки тип запуска службы будет определён как "Manual". Изменим
тип запуска службы на "Automatic (Delayed Start)" и попробуем запустить службу снова.

MSDTC Service Automatic Delayed Start

На этот раз служба успешно запустилась и после перезапуска оснастки comexp.msc снова появилась возможность управления в узле Component Services. Финалом этой истории стала успешная установка агента DPM и неутешительной вывод о том, насколько коварным может быть некорректно отработавший механизм первичной инициализации ОС после sysprep и всякие нехорошие мысли о том, что ещё в системе могло сломаться, что "аукнется" в дальнейшем.

Добавить комментарий