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

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

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

Различие между регламентными и фоновыми заданиями

Проанализируем корень проблемы. Одной из самых распространенных ошибок является отождествление регламентных и фоновых заданий. Рассмотрим их взаимосвязь подробнее. РегламентныеЗадания — это объекты метаданных, для которых задано расписание. Именно их мы отключаем флажком в консоли администрирования кластера 1С. Однако само выполнение кода происходит в рамках объекта ФоновыеЗадания.

Важно понимать следующие нюансы:

  1. Инерционность процессов: Блокировка регламентных заданий предотвращает запуск новых процессов по расписанию, но она не завершает принудительно те фоновые задания, которые уже были инициированы и находятся в процессе выполнения.
  2. Независимые фоновые задания: В платформе 1С существуют механизмы запуска фоновых заданий программным способом, которые не привязаны к регламентным заданиям и их расписанию. Такие задания могут инициироваться действиями пользователей или системными событиями.
  3. Длительность выполнения: Некоторые задания (например, закрытие месяца или пересчет итогов) могут выполняться крайне долго. Даже если вы включили блокировку за 5 минут до обновления, «хвосты» работающих процессов могут остаться в системе.

Влияние полнотекстового поиска (ППД)

Выясним причину, которая часто остается «за кадром» — работу механизма полнотекстового поиска данных. Это системный процесс, который может запускаться платформой автоматически для индексации измененных данных. Даже при полной блокировке регламентных заданий, ППД может инициировать активность на уровне СУБД или сервера приложений.

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

  1. Перейдем в раздел Администрирование — Обслуживание.
  2. Найдем подраздел Полнотекстовый поиск.
  3. Снимем флажок Полнотекстовый поиск данных включен или нажмем кнопку Очистить индекс (временно, на период обновления).

Особенности платформы 8.3.18 и выше: борьба с фантомными сеансами

Рассмотрим специфику работы современных версий платформы, таких как 8.3.18.1334. В этих релизах администраторы часто сталкиваются с так называемыми «фантомными» сеансами. Это ситуация, когда в консоли сеанс отображается как активный, хотя соответствующий ему процесс rphost или соединение с SQL уже завершены.

Проанализируем алгоритм правильной блокировки перед обновлением:

  1. В консоли администрирования серверов 1С откроем свойства информационной базы.
  2. Установим флажок Блокировка начала сеансов включена.
  3. Обязательно укажем Параметр блокировки (например, кодовое слово или ключ). Это позволит нам самим зайти в базу через Конфигуратор, используя параметр запуска /UC.
  4. Установим флажок Блокировка регламентных заданий включена.
  5. В поле Время начала укажем текущее время, а в поле Сообщение напишем предупреждение для пользователей.

Для гарантированного входа в заблокированную базу используем командную строку:


"C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" ENTERPRISE /S "ServerName\BaseName" /C"ЗавершитьРаботуПользователей" /UC"ВашКлючДоступа"

Очистка серверного кэша и папки snccntx

Если перезагрузка служб 1С и SQL не помогает, разберем более глубокий метод очистки. Иногда сведения о блокировках «застревают» в файлах состояния кластера. В каталоге служебной информации сервера (обычно это C:\Program Files\1cv8\srvinfo) находятся папки с GUID-идентификаторами баз.

Выполним очистку по шагам:

  1. Остановим службу 1C:Enterprise 8.3 Server Agent.
  2. Перейдем в каталог рабочего процесса.
  3. Найдем папку snccntx — именно в ней хранятся данные о сеансах и блокировках.
  4. Очистим содержимое этой папки. Также можно удалить папки кэша приложений (папки с именами типа reg_1541), предварительно сделав их бэкап. Внимание: не удаляйте файлы лицензий .lic и конфигурационный файл 1cv8wsrv.lst.
  5. Запустим службу сервера 1С.

Проверка активных соединений на уровне СУБД

Посмотрим на ситуацию со стороны сервера баз данных. Бывают случаи, когда сеанс в 1С уже закрыт, но соединение (Process ID) в SQL Server продолжает удерживать блокировку на таблицы. Проанализируем список соединений в SQL Server Management Studio (SSMS). Через Activity Monitor или системное представление sys.dm_exec_sessions можно выявить процессы, которые обращаются к нашей базе.

Если мы видим активные процессы от пользователя, под которым работает служба 1С, и при этом в консоли 1С пусто — это повод для принудительного завершения соединений на стороне SQL командой KILL [SPID]. Однако делать это следует крайне осторожно, только убедившись, что служба 1С не выполняет критически важных операций.

Работа с расширениями конфигурации

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

Если ошибка повторяется регулярно, попробуйте временно отключить (снять флажок «Активно») все расширения перед запуском процесса обновления метаданных в Конфигураторе. После успешного обновления основной базы их можно будет включить обратно.

Резюме и рекомендации

Подведем итоги нашего исследования. Если кнопка «Повторить» помогает, и процесс идет дальше — это признак того, что фоновое задание было кратковременным и успело завершиться. Но для «чистого» обновления без нервов рекомендуем следующий чек-лист:

  1. За 15-20 минут до обновления включите блокировку регламентных заданий.
  2. Завершите все активные сеансы пользователей через консоль.
  3. Убедитесь в разделе Соединения (Connections), что нет «зависших» процессов, которые не имеют сеансов, но привязаны к рабочим процессам rphost.
  4. Отключите индексацию полнотекстового поиска.
  5. Если база серверная, используйте монопольный режим при обновлении через Конфигуратор.

Соблюдение этих правил позволит вам избежать ошибок разделенного доступа и сделает процесс сопровождения информационных систем 1С более стабильным и предсказуемым.

← На главную