Перезапуск сервера 1С и SQL Server без потери данных

· 9 мин

Содержание

Правильный порядок такой: сначала останавливаете службу сервера 1С, потом SQL Server, а запускаете в обратном порядке: SQL Server первым, затем сервер 1С. Если перепутать, пользователи получат обрывы сеансов, а база может остаться с незавершёнными транзакциями и долго восстанавливаться при старте.

Перезапуск занимает от 2 до 10 минут, если заранее выгнать пользователей и не запускать его посреди закрытия периода. Ниже: что проверить перед остановкой, три способа перезапуска (консоль, службы Windows, командная строка и PowerShell), что смотреть в логах после старта и как выйти из типовых ситуаций, когда служба не поднимается.

Что проверить до перезапуска

Перезапуск сервера нельзя делать «на горячую». Потратьте 10 минут на подготовку, они сэкономят часы разбирательств.

Кто сейчас работает

Откройте консоль администрирования серверов 1С и посмотрите список сеансов. Интересуют три вещи:

  • 👥 Интерактивные сеансы пользователей: их нужно предупредить и попросить выйти.
  • ⚙️ Фоновые задания: регламентные операции, закрытие месяца , обмены. Прерванное закрытие месяца придётся запускать заново.
  • 🔗 Соединения внешних систем: веб-сервисы, обмен с сайтом, подключения через COM.

Если в базе висит длинная операция (проведение документов за период, пересчёт последовательностей), дождитесь её окончания. Принудительная остановка посреди проведения оставит документы в непроведённом состоянии.

Запретите новые подключения

Чтобы за время подготовки никто не зашёл обратно, в свойствах информационной базы в консоли включите блокировку начала сеансов и задайте сообщение пользователям. Тогда новые сеансы не создаются, а текущие можно спокойно завершить.

Сделайте копию

Перед любым перезапуском продакшн-сервера убедитесь, что есть свежая резервная копия базы. Если сервер падает не от нагрузки, а от проблем с диском, перезапуск может эту проблему обострить.

Минимум для проверки:

  1. Последняя полная копия SQL Server существует и не пустая по размеру.
  2. На диске с файлами баз и журналом транзакций свободно не меньше 10-15% места.
  3. Служба резервного копирования сейчас не работает : прерванное копирование не должно совпасть с остановкой.

Узнайте имена служб

Имена зависят от версии и количества установленных экземпляров. Откройте оснастку «Службы» (services.msc) и найдите:

ЧтоКак выглядит в спискеКороткое имя (для команд)
Сервер 1С«Агент сервера 1С:Предприятия 8.3 (x86-64)»зависит от установки, смотрите в свойствах службы
SQL Server (основной экземпляр)«SQL Server (MSSQLSERVER)»MSSQLSERVER
SQL Server (именованный экземпляр)«SQL Server (ИМЯ)»MSSQL$ИМЯ
Агент SQL Server«Агент SQL Server (MSSQLSERVER)»SQLSERVERAGENT

Короткое имя 1С-службы запишите из окна свойств, поле «Имя службы». Оно пригодится для командной строки.

Если у вас PostgreSQL вместо MS SQL, схема та же: сначала сервер 1С, потом СУБД. Меняется только имя службы.

Мягкая остановка через консоль администрирования

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

  1. Откройте оснастку «Администрирование серверов 1С:Предприятия» и разверните нужный кластер.
  2. Перейдите в «Информационные базы», откройте свойства базы и включите блокировку начала сеансов.
  3. В ветке «Сеансы» выделите все интерактивные сеансы и завершите их. Сначала подождите, пока пользователи сохранят работу.
  4. В ветке «Соединения» убедитесь, что не осталось подключений от служб и внешних систем.
  5. Фоновые задания завершатся сами или их можно снять вручную, если они зависли.

После этого в консоли должно остаться пусто или почти пусто. Теперь можно останавливать службы.

Если консоль не открывается или не видит кластер, значит, служба агента уже не отвечает. Переходите сразу к остановке через службы Windows и не тратьте время на ожидание.

Перед остановкой служб
Выполнено: 0 / 5

Как перезапустить службу SQL Server и сервер 1С через «Службы»

Это самый наглядный способ. Подходит, если вы работаете на самом сервере через RDP.

Остановка

  1. Нажмите Win+R, введите services.msc.
  2. Найдите службу агента сервера 1С, щёлкните правой кнопкой, выберите «Остановить». Вместе с ней завершатся рабочие процессы rphost и менеджер кластера rmngr.
  3. Если служба зависла в состоянии «Остановка», подождите пару минут, затем используйте раздел про принудительное завершение ниже.
  4. Остановите «Агент SQL Server», если он запущен. Иначе при остановке основной службы Windows предложит остановить зависимые.
  5. Остановите «SQL Server (MSSQLSERVER)». Это займёт от нескольких секунд до пары минут: сервер сбрасывает на диск изменённые страницы.

Запуск

  1. Запустите «SQL Server» и дождитесь статуса «Выполняется».
  2. Запустите «Агент SQL Server», если он нужен для заданий обслуживания.
  3. Запустите службу агента сервера 1С.
  4. Подождите 30-60 секунд: за это время поднимется менеджер кластера и первые рабочие процессы.

Почему именно такой порядок? Сервер 1С при старте обращается к базам в SQL Server, и если СУБД ещё не готова, часть баз останется недоступной до ручного перезапуска.

Принудительное завершение

Когда служба 1С висит и не реагирует, помогает завершить процесс. В диспетчере задач на вкладке «Подробности» найдите ragent.exe, rmngr.exe и все rphost.exe, завершите их и затем запустите службу заново.

Принудительное завершение процессов использует только как крайнюю меру. Сеансы оборвутся без сохранения, а в журналах СУБД появятся откаты транзакций.

Перезапуск службы SQL Server и 1С из командной строки и PowerShell

Команды нужны, когда перезапуск идёт по расписанию, из скрипта или на сервере без графической оболочки. Запускайте консоль от имени администратора.

Командная строка

Остановка и запуск через net. Имя службы 1С подставьте своё из свойств службы.

rem Остановка: сначала 1С, потом SQL
net stop "Имя_службы_1С"
net stop SQLSERVERAGENT
net stop MSSQLSERVER

rem Запуск: сначала SQL, потом 1С
net start MSSQLSERVER
net start SQLSERVERAGENT
net start "Имя_службы_1С"

Для именованного экземпляра имя службы в кавычках: net stop "MSSQL$ИМЯ". Знак доллара без кавычек в некоторых оболочках обрабатывается как переменная.

Команда net stop MSSQLSERVER /y останавливает и зависимые службы, например, агент. Применяйте её осознанно: она не спрашивает подтверждения.

PowerShell

В PowerShell то же самое делает Restart-Service, который сам остановит и запустит службу.

# Остановить 1С и дождаться полной остановки
Stop-Service -Name "Имя_службы_1С" -Force
(Get-Service -Name "Имя_службы_1С").WaitForStatus('Stopped','00:02:00')

# Перезапустить SQL Server вместе с зависимыми службами
Restart-Service -Name MSSQLSERVER -Force

# Поднять 1С
Start-Service -Name "Имя_службы_1С"
Get-Service MSSQLSERVER, SQLSERVERAGENT, "Имя_службы_1С"

Преимущество перед net: можно дождаться нужного статуса и не запускать следующий шаг раньше времени. В скриптах обязательно ставьте WaitForStatus, иначе 1С стартует раньше, чем SQL Server откроет базы.

Сервер на Linux

Если кластер 1С стоит на Linux, служба запускается через systemctl. Имя юнита зависит от версии платформы: посмотрите его командой systemctl list-units | grep srv1cv8.

sudo systemctl stop имя_юнита_1с
sudo systemctl restart postgresql
sudo systemctl start имя_юнита_1с

После остановки проверьте, что не остались процессы: ps aux | grep -E "ragent|rphost|rmngr". Порядок тот же: 1С останавливается первой.

Пошаговый помощник
Выберите способ
Один сервер, вы за RDP: служба через оснастку «Службы». Нужен скрипт или расписание: PowerShell с WaitForStatus.

Что смотреть в логах после перезапуска

Служба запустилась, но это ещё не значит, что всё в порядке. Проверьте журналы в трёх местах.

Журнал SQL Server

Файл ERRORLOG лежит в папке Log установки экземпляра. Проще всего открыть его через SQL Server Management Studio: «Управление» → «Журналы SQL Server» → «Текущий».

Что искать после старта:

  • ✅ Строки «Recovery completed» по каждой базе: восстановление после остановки прошло.
  • ⚠️ «Recovery of database … is x% complete» долго не меняется: база проходит откат, не трогайте службу.
  • ❌ Ошибки уровня 17-25 и «Error: 9001» (журнал транзакций недоступен): базу нужно проверять отдельно.

Журнал событий Windows

Откройте «Просмотр событий» → «Журналы Windows» → «Приложение» и «Система». Отфильтруйте по источникам MSSQLSERVER и по имени службы 1С. Подозрительны события о неожиданной остановке службы и нехватке ресурсов: они подскажут, почему сервер вообще понадобилось перезапускать.

Журнал регистрации 1С

Зайдите в базу и откройте журнал регистрации: «Администрирование» → «Журнал регистрации». Отберите события за время вокруг перезапуска. Нас интересуют ошибки соединения с СУБД, сбои фоновых заданий и записи об обрыве сеансов.

Для диагностики сложных зависаний включают технологический журнал: он пишет события сервера на уровне процессов. Включайте его временно, с отбором по нужным событиям, иначе логи съедят диск.

Через 15-20 минут после перезапуска проверьте скорость работы: первые запросы идут медленнее, пока сервер заново наполняет кеш. Это нормально и проходит само.

Если служба не запускается или сервер ведёт себя странно

Самые частые ситуации и что с ними делать.

Диагностика: выберите симптом

Если перезапуск нужен слишком часто

Когда сервер приходится перезапускать раз в неделю, это сигнал, а не рутина. Типичные причины:

  • 📈 Рост памяти рабочих процессов: смотрите в консоли объём памяти по каждому rphost.
  • 🧱 Блокировки и долгие запросы: анализируйте через журнал регистрации и технологический журнал.
  • 💾 Мало оперативной памяти у SQL Server. Если он забрал всё, что есть, Windows и 1С начинают конкурировать за ресурсы. Ограничьте максимум памяти SQL Server в его свойствах так, чтобы оставалась хотя бы четверть ОЗУ системе.

Для 1С можно настроить плановый перезапуск рабочих процессов в параметрах кластера: рабочие процессы пересоздаются по интервалу без остановки всей службы. Это мягче, чем перезагрузка сервера целиком.

Когда перезапускать не нужно

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

  • Тормозит один пользователь: проблема в его клиенте, сети или конкретном отчёте. Завершите его сеанс.
  • Завис один запрос: найдите блокирующий сеанс и снимите его, не трогая сервер.
  • Идёт плановое обслуживание индексов или резервное копирование: перезапуск прервёт его и затянет окно обслуживания.
  • Конфигурацию обновляют: между загрузкой и реструктуризацией базы перезапуск нежелателен.

Автоматизация планового перезапуска

Если вам нужен регулярный перезапуск (например, раз в неделю ночью по требованиям регламента), не делайте его вручную.

  1. Напишите скрипт PowerShell по схеме из раздела выше с остановкой в правильном порядке и ожиданием статусов.
  2. Добавьте в начало блокировку начала сеансов и сообщение пользователям за 15-30 минут.
  3. Запишите результат каждого шага в текстовый файл: потом будет видно, на каком шаге произошёл сбой.
  4. Запустите скрипт через планировщик заданий Windows от имени учётной записи с правами локального администратора.
  5. Проверьте сначала на тестовом стенде, а на продакшне включайте в окно с минимальной нагрузкой.

Не запускайте плановый перезапуск в ночь закрытия квартала и подготовки отчётности. Фоновые задания в эти дни идут дольше обычного.

Частые вопросы

Можно ли перезапустить только SQL Server, не трогая сервер 1С?
Можно, но 1С потеряет соединения, и сеансы пользователей оборвутся. После запуска СУБД лучше перезапустить и службу 1С, чтобы кластер заново открыл соединения.
Сколько ждать после запуска служб?
Обычно 1-2 минуты до готовности кластера. Если баз много или SQL Server проходит восстановление после аварийной остановки, ожидание может затянуться на десятки минут.
Нужно ли перезагружать весь сервер вместо перезапуска служб?
Для ежедневных задач нет. Перезагрузка Windows нужна после обновлений системы и при проблемах с драйверами или памятью. Перед ней все службы всё равно останавливают в нужном порядке.
Потеряются ли данные при перезапуске?
Зафиксированные транзакции сохраняются: SQL Server пишет их в журнал. Теряются несохранённые данные в открытых формах и незавершённые операции.
Как перезапустить сервер 1С, если нет доступа по RDP?
Через PowerShell по удалённому подключению (Enter-PSSession) или стандартными средствами удалённого управления службами, если у вас есть права администратора на сервере.