Ситуация, когда при запуске клиентского приложения 1С:Предприятие возникает ошибка «База данных заблокирована», является критической для работы любого предприятия. Особенно загадочно эта проблема выглядит в тех случаях, когда перезагрузка серверов и чистка кэша не приносят результата, а работа восстанавливается только при временном откате системной даты на сервере. В данной статье мы подробно разберем, почему возникает этот «полтергейст», и проанализируем последовательность действий для окончательного решения проблемы.
Рассмотрим ситуацию, когда стандартные методы администрирования 1С не помогают. В конфигурациях от компании «1С-Рарус», таких как «ТКПТ», используется собственная Система защиты и лицензирования (СЗК). Она работает параллельно со стандартной защитой HASP и имеет свои механизмы блокировки сеансов.
Выясним причину, по которой откат даты на один день назад (например, с 05.09.2020 на 04.09.2020) временно исправляет ситуацию. Это явный признак того, что сработал временной ограничитель. Проанализируем основные факторы:
Rarus Soft Protection или Сервер защиты. Если служба запущена, но «зависла», она может транслировать некорректный статус лицензий.Иногда флаг блокировки установки соединений «застревает» непосредственно в структурах базы данных на SQL-сервере. Даже если в консоли администрирования 1С флажок «Блокировка начала сеансов» снят, платформа может считывать обратное из системных таблиц. Разберем по шагам, как проверить таблицы базы данных:
Посмотрим на таблицу Params. В ней хранятся настройки информационной базы. Нам нужно проверить наличие записи dbms-session-lock. Для этого выполним SQL-запрос:
SELECT * FROM Params WHERE FileName = 'dbms-session-lock'
Если запрос возвращает строку, это означает, что в базе установлена программная блокировка. В нормальном состоянии (когда вход разрешен) этой записи быть не должно. Прежде чем удалять что-то, обязательно создайте резервную копию базы данных.
Также проанализируем таблицу Config. Если имело место неудачное динамическое обновление (так называемое «обновление демона»), в таблице могут остаться записи о монопольном режиме. В некоторых случаях помогает очистка таблицы ConfigSave, которая хранит промежуточные состояния конфигурации при обновлении:
-- Опасно! Выполнять только при наличии бэкапа и понимании процесса
DELETE FROM ConfigSave
Блокировка может быть зафиксирована на уровне файловой системы сервера 1С. Платформа хранит данные о сеансах и блокировках в служебных файлах. Рассмотрим процесс глубокой очистки сервера:
Агент сервера 1С:Предприятия.C:\Program Files\1cv8\srvinfo\reg_1541..lst и файлы внутри папок snccntx. Будьте осторожны: не удаляйте саму папку с GUID базы, только временное содержимое сеансов.Этот метод позволяет гарантированно избавиться от «призраков» пользователей, которые могли зависнуть в системе после аварийного завершения работы «Робота» или других сервисных учетных записей.
Если стандартная консоль mmc не отображает блокировки, попробуем альтернативные методы управления кластером. Для версий платформы 8.3.14 и выше рекомендуется использовать сервер администрирования ras и обработку «Управление серверами». Это позволяет взаимодействовать с сервером через программный интерфейс, который иногда видит больше данных, чем визуальная консоль.
Также рассмотрим возможность запуска клиента с параметром -debug. Как показывает практика, в некоторых версиях платформы (например, 8.3.23.2040) включение режима отладки на сервере странным образом обходит ложные сообщения о блокировке, позволяя зайти в систему и штатно снять флаги запрета входа.
Проанализируем ситуацию с использованием Windows 10 в качестве серверной операционной системы. Хотя технически 1С и SQL могут на ней работать, Windows 10 имеет жесткое ограничение на количество одновременных TCP-соединений (обычно не более 20). Если пользователь «Робот» или кассовые серверы генерируют большое количество запросов, лимит исчерпывается.
В этом случае платформа 1С не может получить ответ от менеджера блокировок и выдает типовое сообщение «База данных заблокирована», просто потому что не смогла «достучаться» до службы из-за ограничений ОС. В качестве решения рассмотрим перенос серверных компонентов на полноценную Windows Server или Linux.
Если вы столкнулись с подобным «полтергейстом», рекомендуем придерживаться следующего плана:
Конфигуратор. Если это удается, выполните команду Администрирование -> Тестирование и исправление (только логическую проверку), это может сбросить флаг блокировки./UC <код разрешения>, если этот код вам известен (часто используется при автоматических обновлениях).Помните, что в отраслевых решениях Рарус блокировка может быть вызвана внутренним кодом конфигурации при старте системы. Если в коде прописана проверка валидности лицензии через интернет и 05.09.2020 сервер Раруса не ответил, программа могла сама установить флаг блокировки в константах базы.