Администрирование · 11 мин
Как выгнать пользователя из серверной базы 1С
Как отключить пользователя от серверной базы 1С через консоль кластера, администрирование СУБД и программно. Пошаговые инструкции, риски и проверка результата.
Принудительное отключение пользователя от серверной базы 1С — штатная задача администратора. Она возникает, когда сеанс «завис» и блокирует регламентные задания, когда нужно срочно освободить базу для обновления конфигурации или когда сотрудник оставил открытый сеанс на уволенном компьютере. В клиент-серверном варианте работы есть несколько способов завершить сеанс: через консоль кластера серверов 1С, средствами СУБД и программно из самой 1С.
Выбор способа зависит от ситуации. Консоль кластера — самый безопасный и контролируемый инструмент: он разрывает соединение на уровне сервера 1С и корректно завершает сеанс. Завершение процессов на уровне СУБД (MS SQL, PostgreSQL) — более грубый метод, который применяют, когда консоль недоступна или сеанс не отвечает. Программное отключение подходит для массовых сценариев, например перед плановым обновлением.
Прежде чем разрывать сеанс, важно понять, чем занят пользователь. Если в момент отключения выполняется запись документов или проведение, есть риск получить незавершённую транзакцию и фоновые задания в подвисшем состоянии. Поэтому первым шагом всегда идёт диагностика: кто подключён, что делает и как давно сеанс не проявляет активности.
Как понять, кто подключён к базе и что делает
Перед отключением откройте консоль кластера серверов 1С (оснастка «Администрирование серверов 1С Предприятия»), найдите нужный кластер, рабочий сервер и информационную базу. В разделе «Сеансы» отображается список активных подключений: имя пользователя, компьютер, время начала сеанса, время последней активности и текущий режим (толстый клиент, тонкий клиент, фоновое задание, веб-клиент).
Обратите внимание на колонку «Время последнего обращения». Если сеанс не проявлял активности несколько часов, а пользователь утверждает, что давно вышел, — это классический «зависший» сеанс, который можно смело завершать. Если же активность была секунды назад, пользователь работает прямо сейчас, и отключение прервёт его действия.
Отдельно проверьте раздел «Соединения»: один сеанс может держать несколько соединений с рабочими процессами кластера. Также полезно посмотреть раздел «Блокировки», чтобы убедиться, что сеанс не держит управляемые блокировки на объектах, из-за которых стоят другие пользователи.
Сверьте время последнего обращения с текущим временем
Проверьте, не идёт ли обновление или обмен данными
Предупредите пользователя перед отключением
Завершение сеанса через консоль кластера серверов 1С
Это основной и рекомендуемый способ. Откройте оснастку «Администрирование серверов 1С Предприятия» на машине, где она установлена, разверните дерево: Центральные серверы → имя сервера → Кластеры → локальный кластер → Информационные базы → нужная база → Сеансы.
Найдите в списке строку с нужным пользователем. Для удобства список можно отсортировать по колонке «Пользователь» или «Компьютер». Кликните правой кнопкой мыши по сеансу и выберите «Удалить». Сеанс завершится немедленно: у пользователя на экране появится сообщение о том, что соединение с сервером разорвано администратором, и клиентское приложение закроется.
Чтобы отключить всех сразу, выделите несколько сеансов с зажатой клавишей Ctrl или Shift и удалите их одним действием. Учтите, что в списке присутствуют и системные сеансы (например, сеанс фоновых заданий самой базы) — их завершение может прервать регламентные операции, поэтому выборочно проверяйте, что именно удаляете.
- 1Откройте оснастку «Администрирование серверов 1С Предприятия»
- 2Перейдите в нужный кластер и информационную базу
- 3Откройте раздел «Сеансы» и найдите пользователя
- 4Проверьте время последней активности сеанса
- 5Кликните правой кнопкой — «Удалить»
- 6Убедитесь, что сеанс исчез из списка после обновления
Блокировка сеансов вместо разового отключения
Разовое удаление сеанса не мешает пользователю тут же подключиться снова. Если задача — освободить базу для обновления конфигурации или регламентных работ, правильнее установить блокировку сеансов. В консоли кластера откройте свойства информационной базы (правый клик по базе — «Свойства») и установите флаг «Блокировка регламентных заданий включена» и «Блокировка начала сеансов включена».
В свойствах блокировки можно задать время начала и окончания, а также код разрешения — строку, которую администратор указывает в параметре запуска /UC, чтобы самому войти в заблокированную базу. Сообщение блокировки увидят пользователи при попытке входа.
После установки блокировки удалите текущие сеансы вручную — блокировка предотвращает новые подключения, но не выгоняет уже подключённых. Когда работы завершены, снимите оба флага, иначе утром пользователи не смогут войти в базу.
Отключение на уровне СУБД: когда и как
Если консоль кластера недоступна, зависла или сеанс не удаляется штатно, соединение можно разорвать на стороне СУБД. В MS SQL Server это делается через SQL Server Management Studio: Activity Monitor → Processes, поиск сессии по имени базы и логину, затем правый клик — Kill Process. Либо командой T-SQL.
KILL 57; -- вместо 57 укажите SPID нужной сессии из sys.dm_exec_sessionsВ PostgreSQL зависшие подключения завершают функцией pg_terminate_backend по идентификатору процесса из представления pg_stat_activity, отфильтрованного по имени базы данных.
Этот метод грубее консоли: он разрывает соединение между сервером 1С и СУБД, но сам сеанс в кластере 1С может какое-то время числиться активным, пока кластер не обнаружит обрыв. Применяйте его только когда штатные средства не сработали, и не завершайте так системные процессы самой СУБД — ошибочный KILL по служебной сессии может остановить работу всех баз на сервере.
Программное отключение пользователей
Для регулярных задач — например, ночного отключения всех перед бэкапом — используют программные средства. В типовых конфигурациях на базе Библиотеки стандартных подсистем есть обработка «Блокировка работы пользователей» (или аналогичный механизм завершения работы), которая корректно предупреждает пользователей и завершает их сеансы с задержкой.
Администраторы также используют пакетный режим агента сервера и утилиты администрирования кластера (rac) для завершения сеансов из скриптов. Команда rac session terminate позволяет завершить конкретный сеанс по его идентификатору, что удобно встраивать в сценарии обслуживания.
rac session --cluster=<ID кластера> terminate --session=<ID сеанса>Самописные обработки, которые перебирают сеансы через COM-соединение с агентом сервера, тоже рабочий вариант, но требуют аккуратности: ошибка в скрипте может завершить все сеансы кластера, включая служебные. Всегда тестируйте такие сценарии на копии базы.
Сравнение способов отключения
Каждый метод имеет свою область применения. Консоль кластера подходит для точечных и массовых отключений в штатном режиме. СУБД — аварийный вариант. Скрипты rac — для автоматизации. Блокировка сеансов — не способ «выгнать», а способ не пустить обратно.
| Способ | Когда применять | Ограничения |
|---|---|---|
| Консоль кластера, удаление сеанса | Точечное или массовое отключение в штатной ситуации | Нужен доступ к оснастке и пароль администратора кластера |
| Блокировка сеансов в свойствах базы | Подготовка к обновлению, регламентные работы | Не завершает уже открытые сеансы |
| Kill сессии в СУБД | Консоль недоступна, сеанс не удаляется | Риск затронуть чужие процессы, сеанс может «зависнуть» в кластере |
| Утилита rac / скрипты | Регулярное автоматическое отключение | Требует настройки и тестирования сценариев |
Сравнение вариантов
Оптимально для разового отключения; требует прав администратора кластера
Подходит перед обновлением; не выгоняет уже подключённых
Аварийный вариант при недоступной консоли; действует грубо
Для регулярной автоматизации; требуют отладки на тестовой базе
Как проверить результат и частые проблемы
После удаления сеанса обновите список в консоли кластера (F5) — строка пользователя должна исчезнуть. У самого пользователя клиент 1С закроется с сообщением о разрыве соединения. Если сеанс остался в списке, проверьте раздел «Соединения»: возможно, соединение зависло на рабочем процессе, и его нужно завершить там же.
Типичная проблема — «фантомные» сеансы, которые висят часами и не удаляются. Обычно помогает перезапуск рабочего процесса кластера (службы «Агент сервера 1С» на конкретном сервере), но это отключит всех пользователей этого процесса, поэтому выполняйте перезапуск в нерабочее время.
Как проверить результат
Сеанс пользователя отсутствует
Сеанс остался или появился снова без действий пользователя
Закрылось с сообщением о разрыве соединения
Продолжает работать — удалён не тот сеанс
Управляемых блокировок от завершённого сеанса нет
Блокировки остались — перезапустите рабочий процесс
Если после отключения пользователь не может войти обратно, проверьте, не осталась ли включённой блокировка сеансов в свойствах базы — это самая частая причина «необъяснимых» отказов во входе после регламентных работ.
Частые вопросы
Можно ли выгнать пользователя, не имея доступа к консоли кластера?
Да, если у вас есть права администратора в самой базе: в типовых конфигурациях используйте обработку завершения работы пользователей или установите блокировку сеансов из режима Предприятия. Полностью без прав администратора — ни в кластере, ни в базе, ни в СУБД — завершить чужой сеанс нельзя.
Что увидит пользователь при принудительном отключении?
Клиентское приложение закроется с сообщением о том, что соединение с сервером разорвано администратором. Несохранённые данные в открытых формах будут потеряны, поэтому активных пользователей лучше предупреждать заранее.
Почему удалённый сеанс снова появляется в списке?
Чаще всего у пользователя настроено автоматическое переподключение или ярлык запуска, и он просто вошёл заново. Либо это фоновое задание, которое перезапускается по расписанию. Чтобы вход был невозможен, включите блокировку начала сеансов в свойствах базы.
Как отключить всех пользователей разом перед обновлением?
Установите блокировку сеансов и регламентных заданий в свойствах информационной базы, затем выделите все сеансы в консоли кластера и удалите их. Для регулярных операций автоматизируйте процесс скриптом с утилитой rac.
Опасно ли завершать сеанс во время проведения документов?
Разрыв сеанса откатывает незавершённую транзакцию, поэтому целостность данных обычно сохраняется. Однако пользователь потеряет введённые данные, а длительные операции могут оставить фоновые процессы в подвисшем состоянии. По возможности дождитесь завершения активности или предупредите пользователя.
Что делать, если сеанс не удаляется ни из консоли, ни из СУБД?
Перезапустите рабочий процесс кластера или службу агента сервера 1С на соответствующем сервере. Это гарантированно сбросит зависшие сеансы, но отключит всех пользователей, работающих через этот процесс, поэтому планируйте действие на нерабочее время.
Что важно запомнить
Штатный способ выгнать пользователя из серверной базы 1С — удалить сеанс в консоли кластера. Перед отключением проверяйте активность сеанса, для регламентных работ используйте блокировку сеансов, а средства СУБД оставляйте как аварийный вариант. После любых действий обновите список сеансов и убедитесь, что блокировки сняты, когда работы завершены.