У меня есть сервер Windows 2003, который находится в моем удаленном центре обработки данных. Сегодня утром я попытался подключиться к нему по RDP, но соединение не удалось со следующей ошибкой:
Этот компьютер не может подключиться к удаленному компьютеру. Попробуйте подключиться снова. Если проблема не исчезнет, обратитесь к владельцу удаленного компьютера или к сетевому администратору.
Я также пытался выполнить команду удаленного выключения / перезапуска с помощью команды «shutdown -i» из моей локальной системы. Об ошибках не сообщается, однако система не перезагружается.
На этом сервере работает SQL Server 2005, он по-прежнему полностью функционирует и реагирует на запросы.
Я также могу удаленно подключиться к панели управления службами удаленной системы.
Могу ли я попытаться восстановить контроль над системой, за исключением того, что оператор в центре обработки данных сделает за меня жесткую перезагрузку сервера?
Я столкнулся с той же проблемой, пытаясь выполнить удаленную перезагрузку на компьютере с Windows XP. В итоге я использовал команду PsKill, часть Пакет SysInternals PsTools, чтобы убить процесс Winlogon, например:
pskill \\hostname winlogon
Это приведет к немедленной перезагрузке удаленного компьютера.
Вместо этого попробуйте:
shutdown -r -f -m \\hostname -c "Comment goes here"
Это немного радикально, но мне нужно было сделать это в среде, очень похожей на то, что вы описываете. Я также открываю окно cmd и запускаю команду ping -t против сервера, чтобы посмотреть, когда стек IP опускается и возвращается обратно. Это очень полезный индикатор активности, когда у вас нет физического доступа к серверу (или вам лень встать и подойти к нему).
РЕДАКТИРОВАТЬ: (на основе вашего комментария) Хорошо, сделайте это сначала, а затем попробуйте снова (или перезапустите его как обычно, если это сработает). Смотрите, что продвигает вас дальше. -A прервет завершение работы системы.
shutdown -a -m \\hostname
Что ж, это немного безумие, но вы можете включить xp_cmdshell на SQL Server, а затем выполнять команды от имени пользователя, на котором запущен SQL Server, поэтому вы можете выполнить shutdown -r, если он не будет слушать удаленные команды.
Если вы хотите попытаться перезапустить RDP без перезагрузки компьютера, вы можете попробовать (это не проверено; я не собираюсь делать это ни на одном из моих компьютеров: D):
Выясните, что прослушивает 3389 (порт RDP), запросив:
xp_cmdshell 'netstat -anO | findstr ":3389"'
Убейте pid с помощью taskkill. Наконец, выпустите
NET START "TERMINAL SERVICES"
Задержите дыхание и попробуйте снова RDP.
Если вы выполнили выключение / перезагрузку и сервер просто не выйдет из строя, вы можете убить процесс wininit.exe с помощью инструмента pskill. В Windows 2012 вы можете использовать собственный инструмент taskkill.
Сначала проверьте, всегда ли вы уверены в этом, проверьте, пропускает ли брандмауэр RDP;) Это не глупо, это просто иногда происходит из ниоткуда;)
Также убедитесь, что служба терминалов включена, и, возможно, попробуйте перезагрузить ее, если у вас есть возможность физически попасть на сервер.
Подобные вещи случаются и со мной на моем сервере 2003 R2.
когда Терминальные службы перестает работать.
Это не столько ответ на ваш вопрос, сколько объяснение того, что могло его вызвать. Я видел, как RDP несколько раз переставал работать в Windows Server 2003, и обычно это происходит в одном из двух сценариев;
Пост-патч. Система перезагружается после автоматического обновления, но не выключается полностью. Терминальные сеансы завершаются, и новые соединения не принимаются, но сервер (файл, mssql, DC) продолжает работать.
Эта статья в базе знаний CTX116901 описывает неисправность, в которой пространство изображения сеанса слишком мало и он не может больше загружать драйверы видео или принтера (следовательно, это проблема для серверов MetaFrame).
Чтобы установить размер пространства образа сеанса через ключ реестра, попробуйте
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v "SessionImageSize" /t REG_DWORD /d 0x20
Попробуйте такие значения, как,
0x10 (16 Мб)
0x20 (32 Мб)
У меня была та же проблема, что PSKill работал как шарм - я искал такую программу целую вечность - никогда не знал, что sysinternals выпустила ее.
Обычно это вызвано задачей, которая не завершается, сервер ожидает завершения задачи, чтобы продолжить перезапуск. вы можете решить эту проблему, найдя виноватую задачу и удаленно закрыв ее. использование: tasklist / s HostName обычно SQL является непосредственным подозреваемым. используйте Taskkill, чтобы убить его, и сервер продолжит перезапуск.