Remote Desktop 2012 R2 – исключение сервера из RD Deployment


На днях столкнулся с небольшой проблемой при настройке RD Deployment в Windows Server 2012 R2. Возникла необходимость переустановить сервер, который входит в состав развертывания Remote Desktop (иначе говоря RD Deployment). Исключил его из коллекции, а потом из списка серверов в Server Manager. Переустановил. Снова добавил в Server Manager. И тут обнаружил, что добавить его в RD Deployment невозможно, т.к. он уже «добавлен»: в визарде Remote Desktop Services осталась запись с именем моего сервера и ролью RD Session Host.

Попытки удалить эту запись через GUI и Powershell не увенчались успехом. Powershell, например, выдал:

Object reference not set to an instance of an object.

Примерно такое же сообщение было в GUI.

Поиск навел на статью KB 2815795, которая описывает похожую ситуацию только в сценарии с VDI и обходной путь: переименовать систему.

Мне удалось найти другой «неофициальный» способ устранения проблемы:

1. Открываем базу RD брокера и находим таблицу RDS.Server, а в ней номер записи с именем нашего сервера.

2. Теперь открываем таблицу RDS.RoleRdsh и удаляем запись с номером найденном на первом шаге.

3. Возвращаемся в RDS.Server и удаляем там запись о сервере.

4. Остается перезапустить Server Manager и убедиться, что застрявшая запись о сервере пропала.

Понятно, что если роль сервера не RDSH, а другая, то запись о сервере надо искать в соответствующей таблице в базе брокера.

После описанных манипуляций сервер был добавлен заново в RD Deployment, коллекцию и успешно заработал.

Примечание 1: способ, конечно, не поддерживаемый официально, но база брокера, как я убедился, имеет контроль целостности, и ее не так просто разрушить. Но лучше ее бакапить перед подобными операциями.

Примечание 2. Честно говоря, механизм корректного исключения сервера из RD Deployment не совсем ясен, т.к. процедура исключения второго сервера в аналогичной ситуации у меня прошла без проблем.

Реклама

комментария 4

  1. Илья,

    Через Powershell удаляли с помощью командлета Remove-RDServer?

    • Проблема в том, что нарушается целостность базы данных и стандартные средства не работают.

      • Илья, спасибо за ответ.

        Я думаю, что ситуацию должны были исправить следующие действия и командлеты такого вида:

        1. Сервер действительно должен быть недоступен, а значит его надо было просто выключить, но ServerManager-e должен быть добавлен, так как в развертывании присутствует.

        Далее в PowerShell

        2. Import-Module RemoteDesktop
        3. Remove-RDSessionHost -SessionHost «servername» -ConnectionBroker «servername» -Force

        После запуска данного командлета честно получаем ошибку

        4. Remove-RDServer «servername» -ConnectionBroker «servername» -Role RDS-RD-SERVER -Force -Verbose

        Запуск этого командлета проведет Cleanup развертывания, в GUI сервер исчезнет.

        А далее можно добавлять сервер.

  2. Кстати, есть еще проще способ.
    Сервер необходимо добавить в ту коллекцию, в которой он был ранее.
    Add-RDSessionHost -SessionHost «Servername» -ConnectionBroker «Servername» -CollectionName «CollectionName» -Verbose

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: