Как исправить ошибку разделенного доступа к базе 1С при наличии зависших фоновых заданий?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Часто в работе администратора 1С:Предприятие возникает ситуация, когда при попытке обновления конфигурации или выгрузки базы в файл .dt система выдает критическую ошибку «ошибка разделенного доступа к базе данных». При этом стандартные инструменты, такие как консоль администрирования серверов 1С или перезапуск службы агента, не приносят ожидаемого результата — «фантомные» фоновые задания продолжают отображаться в списке активных сеансов.

Давайте разберем по шагам, почему это происходит и как эффективно очистить сервер от таких зависших подключений.

Понимание природы «зависших» сеансов

Когда вы видите в консоли кластера сеансы, которые физически не могут существовать (например, служба сервера 1С была полностью остановлена, а соединение с SQL разорвано), это означает, что информация о них сохранена во временных файлах сервера. Эти данные описывают состояние активных пользователей и фоновых заданий в кэше сервера srvinfo.

Если процесс сервера 1С (rphost.exe) завершился аварийно, файлы сеансовых данных не успели удалиться корректно. При последующем запуске службы сервер 1С считывает эти «битые» файлы и считает, что сеанс по-прежнему активен, блокируя монопольный доступ к базе.

Шаг 1: Остановка служб и завершение процессов

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

  1. Остановите службу «Агент сервера 1С:Предприятие» через оснастку «Службы» в Windows (services.msc).
  2. Откройте «Диспетчер задач» и перейдите на вкладку «Подробности».
  3. Завершите все процессы rphost.exe. Иногда бывает, что служба остановлена, но процесс «подвис» в памяти и продолжает держать файлы открытыми.

Шаг 2: Очистка сеансовых данных (snccntx)

Это самый важный этап решения. Сервер 1С хранит информацию о сеансах в специальных папках, именуемых snccntx. Чтобы найти нужную папку:

  1. Перейдите в директорию, где установлен сервер 1С, по пути: C:\Program Files\1cv8\srvinfo\reg_1541\ (путь может отличаться в зависимости от вашего порта кластера).
  2. Здесь вы увидите подпапки с длинными идентификаторами (GUID). Внутри каждой такой папки находится подпапка snccntx.
  3. Именно в snccntx хранятся файлы, описывающие текущие соединения. Удалите содержимое этой папки (или саму папку, сервер создаст ее заново при следующем запуске).

Важное примечание: Будьте внимательны! Удаление всей папки srvinfo приведет к потере настроек всех баз данных в консоли кластера, поэтому удаляйте файлы только внутри папки snccntx.

Шаг 3: Проверка соединений на уровне SQL

Если после очистки кэша сеансы все еще «видны» в консоли, необходимо проверить, нет ли «потерянных» соединений на стороне SQL Server. Хотя 1С и SQL работают по разным протоколам, иногда сеанс в 1С может удерживать блокировку в таблицах базы данных (например, в таблице _Config или v8users).

Попросите администратора БД проверить текущие подключения к базе 1С. Если вы обнаружили зависшие процессы SQL, которые ссылаются на базу, можно принудительно завершить их командой KILL (будьте крайне осторожны при выполнении этого действия!).

Шаг 4: Повторный запуск и профилактика

После проведения очистки кэша сеансовых данных запустите службу сервера 1С заново. Теперь консоль администрирования должна показывать пустой список активных сеансов для данной базы.

Чтобы минимизировать подобные риски в будущем, рекомендуем:

Теперь ваша база данных должна быть свободна от «фантомных» сеансов, и вы сможете беспрепятственно выполнить обновление или выгрузку в .dt.

← На главную