В практике администрирования клиент-серверных версий «1С:Предприятия» часто встречается ситуация, когда после планового или вынужденного изменения пароля системного администратора СУБД (sa) базы данных внезапно становятся недоступными для пользователей. На экране появляется критическое предупреждение: «Начало сеанса с информационной базой запрещено». При этом попытки войти в конфигуратор или консоль администрирования серверов 1С для исправления ситуации приводят к замкнутому кругу запросов паролей и блокировок.
В этой статье мы подробно проанализируем причины возникновения этой проблемы, разберем типичные ошибки администраторов и рассмотрим четыре эффективных метода восстановления работоспособности базы данных — от простых параметров командной строки до прямого редактирования конфигурационных файлов сервера и таблиц СУБД.
Для того чтобы эффективно решить проблему, выясним причину ее возникновения. В рассматриваемом сценарии задействовано три звена: СУБД MS SQL Server, сервер «1С:Предприятия» и внешняя утилита резервного копирования (в нашем примере — Effector Saver). Процесс, приведший к сбою, выглядит следующим образом:
HRESULT=80040E4D (ошибка входа пользователя sa). Это происходит из-за того, что пароль учетной записи sa на сервере SQL был изменен, а в настройках службы бэкапа или в параметрах подключения базы 1С остался старый пароль.При попытке зайти в свойства заблокированной базы через Консоль администрирования серверов 1С система запрашивает имя и пароль Администратора информационной базы. Здесь многие совершают критическую ошибку: начинают вводить логин sa и пароли от SQL-сервера. Важно понимать разницу:
Пользователь sa (System Administrator) — это суперпользователь СУБД MS SQL Server. Он имеет полный доступ к таблицам базы данных на уровне СУБД, но платформа 1С ничего не знает о нем как о пользователе самой учетной системы.
Администратор информационной базы 1С — это конкретный пользователь, созданный в конфигураторе 1С (в списке пользователей), имеющий роль «Администратор» или «Полные права». Консоль кластера 1С требует именно его учетные данные.
Если нам известен код разрешения блокировки, установленный утилитой резервного копирования, мы можем принудительно запустить сеанс «1С:Предприятия» в обход запрета. Рассмотрим типичные ошибки синтаксиса, которые часто допускают администраторы при попытке сделать это вручную.
В сообщениях темы пользователь пытался выполнить следующую команду:
"C:\Program Files (x86)\1cv8\common\1CV8 Servers.msc" ENTERRISE /S"SERVDB:1541\MT" /CРазрешитьРаботуПользователей /UCКодРазрешения
Проанализируем эту строку и выявим ошибки:
1CV8 Servers.msc является файлом оснастки консоли управления Microsoft (MMC) для администрирования кластера. Он не поддерживает параметры запуска платформы 1С, такие как ENTERPRISE или ключи блокировки. Для запуска сеанса необходимо использовать исполняемый файл платформы 1С — толстый или тонкий клиент (1cv8s.exe или 1cv8.exe).ENTERRISE допущена опечатка (пропущена буква «P»). Правильное написание — ENTERPRISE./UC требует точного указания кода разрешения. Если вписать туда буквально текст «КодРазрешения», запуск не произойдет, если только именно это слово не было задано в программе бэкапа.Для успешного обхода блокировки выполним запуск правильно. Откроем командную строку (cmd) на сервере и введем следующую конструкцию:
"C:\Program Files\1cv8\common\1cv8s.exe" ENTERPRISE /S"SERVDB\MT" /CРазрешитьРаботуПользователей /UC"РезервноеКопирование"
Разберем назначение параметров:
/S"SERVDB\MT" — указывает путь к информационной базе на сервере приложений 1С (ИмяСервера\ИмяБазы)./CРазрешитьРаботуПользователей — специальный несервисный параметр, передаваемый в конфигурацию для отмены блокировки при успешном входе./UC"РезервноеКопирование" — ключ доступа (код разрешения). Значение "РезервноеКопирование" является стандартным кодом для многих программ бэкапа и встроенных механизмов 1С. Если этот код не подходит, перейдем к следующему методу.Если стандартный код разрешения не подходит, выясним, какой именно ключ был установлен утилитой резервного копирования. Эта информация хранится в конфигурационных файлах самого кластера 1С. Разберем этот процесс по шагам:
C:\Program Files\1cv8\srvinfo\reg_1541\ (порт 1541 указывает на номер используемого кластера).1CV8Clst.lst."MT")."РезервноеКопирование".Если нам не удается запустить сеанс 1С через командную строку, мы можем полностью убрать признак блокировки непосредственно из файла конфигурации кластера, минуя любые интерфейсы 1С. Рассмотрим этот надежный метод подробнее:
services.msc в строке «Выполнить»).1C:Enterprise 8.3 Server Agent) и остановим ее. Важно: на время остановки службы все пользователи других баз, расположенных на этом сервере, будут отключены, поэтому процедуру рекомендуется проводить во внерабочее время.C:\Program Files\1cv8\srvinfo\reg_1541\.1CV8Clst.lst, скопировав его в безопасное место.1CV8Clst.lst в текстовом редакторе."MT". Параметры блокировки представляют собой последовательность флагов (0 или 1), дат начала и окончания действия блокировки, а также текста сообщения. Флаг включения блокировки выглядит как цифра 1 в соответствующей позиции структуры. Если аккуратно заменить параметры блокировки на значения по умолчанию (перевести управляющий флаг в 0, очистить даты и строки сообщения), то платформа посчитает блокировку отключенной.1CV8Clst.lst в другую папку, запустите службу сервера 1С (она создаст чистый файл конфигурации без баз), а затем заново добавьте базу в консоли администрирования. Однако ручное редактирование является более предпочтительным, так как сохраняет настройки остальных баз кластера.Рассмотрим самую сложную ситуацию: база заблокирована, зайти в ее свойства в Консоли администрирования серверов 1С мы не можем, поскольку система требует логин и пароль администратора базы 1С, которые утеряны или не подходят. В то же время нам необходимо обновить пароль пользователя СУБД sa в настройках подключения базы данных 1С к SQL.
Для решения этой задачи мы можем временно отключить контроль учетных записей пользователей 1С на уровне базы данных Microsoft SQL Server. Разберем этот алгоритм по шагам:
sa или через Windows-авторизацию).MT:
USE [MT];
GO
-- Временно переименовываем таблицу со списком пользователей платформы
EXEC sp_rename 'v8users', 'v8users_old';
GO
-- Временно переименовываем соответствие пользователей в системной таблице Params
UPDATE Params SET FileName = 'users.usr_old' WHERE FileName = 'users.usr';
GO
Выясним, что произошло после выполнения этого запроса. Платформа 1С хранит список пользователей в таблице v8users и специальном двоичном файле внутри таблицы Params с именем users.usr. Переименовав их, мы заставили платформу считать, что в информационной базе нет ни одного пользователя (включая администраторов). Теперь система безопасности 1С временно отключена.
MT.sa).
USE [MT];
GO
-- Удаляем пустую таблицу пользователей, которую платформа могла автоматически создать при обращении
IF OBJECT_ID('dbo.v8users', 'U') IS NOT NULL
DROP TABLE v8users;
GO
-- Возвращаем исходную таблицу пользователей из резервной копии
EXEC sp_rename 'v8users_old', 'v8users';
GO
-- Восстанавливаем оригинальную запись в таблице Params
UPDATE Params SET FileName = 'users.usr' WHERE FileName = 'users.usr_old';
GO
После выполнения этого запроса все пользователи 1С со своими старыми паролями и правами доступа будут полностью восстановлены, а база данных станет доступна для нормальной работы под управлением сервера 1С с корректно прописанными параметрами подключения к SQL Server.
Чтобы избежать повторения подобных инцидентов в будущем, рекомендуем соблюдать следующие правила администрирования:
sa для постоянного подключения баз 1С к СУБД. Создайте на сервере MS SQL Server отдельного пользователя СУБД (например, usr_1c) с ролью db_owner для баз данных 1С. Это позволит менять пароль системного администратора sa без риска нарушить работу серверов приложений 1С.Мы подробно разобрали все возможные варианты снятия блокировок и восстановления доступа к базам данных 1С. Выберите метод, который наиболее точно соответствует уровню прав доступа в вашей инфраструктуре, и аккуратно следуйте инструкциям.