Как исправить ошибку «Начало сеанса с информационной базой запрещено» после смены пароля sa в SQL Server?

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

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

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

Почему возникает блокировка и в чем заключается главная ошибка администратора?

Для того чтобы эффективно решить проблему, выясним причину ее возникновения. В рассматриваемом сценарии задействовано три звена: СУБД MS SQL Server, сервер «1С:Предприятия» и внешняя утилита резервного копирования (в нашем примере — Effector Saver). Процесс, приведший к сбою, выглядит следующим образом:

  1. Программа резервного копирования по расписанию инициирует бэкап. Для обеспечения согласованности данных она обращается к программному интерфейсу (API) сервера 1С и устанавливает на базу данных блокировку начала новых сеансов.
  2. В процессе выполнения задачи (или перед ее завершением) утилита пытается авторизоваться на SQL-сервере для работы с базой данных, но сталкивается с ошибкой авторизации HRESULT=80040E4D (ошибка входа пользователя sa). Это происходит из-за того, что пароль учетной записи sa на сервере SQL был изменен, а в настройках службы бэкапа или в параметрах подключения базы 1С остался старый пароль.
  3. Из-за ошибки авторизации процесс резервного копирования аварийно завершается. Команда на снятие блокировки сеансов пользователей не передается на сервер 1С. В результате база данных остается в заблокированном («зависшем») состоянии.

При попытке зайти в свойства заблокированной базы через Консоль администрирования серверов 1С система запрашивает имя и пароль Администратора информационной базы. Здесь многие совершают критическую ошибку: начинают вводить логин sa и пароли от SQL-сервера. Важно понимать разницу:

Пользователь sa (System Administrator) — это суперпользователь СУБД MS SQL Server. Он имеет полный доступ к таблицам базы данных на уровне СУБД, но платформа 1С ничего не знает о нем как о пользователе самой учетной системы.

Администратор информационной базы 1С — это конкретный пользователь, созданный в конфигураторе 1С (в списке пользователей), имеющий роль «Администратор» или «Полные права». Консоль кластера 1С требует именно его учетные данные.


Метод 1. Снятие блокировки с помощью командной строки (параметр /UC)

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

В сообщениях темы пользователь пытался выполнить следующую команду:


"C:\Program Files (x86)\1cv8\common\1CV8 Servers.msc" ENTERRISE /S"SERVDB:1541\MT" /CРазрешитьРаботуПользователей /UCКодРазрешения

Проанализируем эту строку и выявим ошибки:

Для успешного обхода блокировки выполним запуск правильно. Откроем командную строку (cmd) на сервере и введем следующую конструкцию:


"C:\Program Files\1cv8\common\1cv8s.exe" ENTERPRISE /S"SERVDB\MT" /CРазрешитьРаботуПользователей /UC"РезервноеКопирование"

Разберем назначение параметров:


Метод 2. Поиск точного кода разрешения в файлах кластера серверов 1С

Если стандартный код разрешения не подходит, выясним, какой именно ключ был установлен утилитой резервного копирования. Эта информация хранится в конфигурационных файлах самого кластера 1С. Разберем этот процесс по шагам:

  1. Зайдем на сервер, где запущена служба «Агент сервера 1С:Предприятия».
  2. Перейдем в каталог данных кластера серверов. По умолчанию для версии 8.3 он находится по пути: C:\Program Files\1cv8\srvinfo\reg_1541\ (порт 1541 указывает на номер используемого кластера).
  3. Найдем в этой папке текстовый файл реестра кластера — 1CV8Clst.lst.
  4. Откроем этот файл с помощью любого текстового редактора (например, Блокнота) и воспользуемся поиском (Ctrl + F), указав имя нашей базы данных (в нашем случае — "MT").
  5. В строке описания параметров базы данных найдем структуру, отвечающую за блокировку сеансов. В ней будет содержаться текстовое значение в кавычках — это и есть наш уникальный код разрешения (например, длинный GUID-идентификатор, сгенерированный программой Effector Saver).
  6. Скопируем этот код и подставим его в команду из Метода 1 вместо значения "РезервноеКопирование".

Метод 3. Кардинальное решение: ручное снятие блокировки через файл реестра кластера

Если нам не удается запустить сеанс 1С через командную строку, мы можем полностью убрать признак блокировки непосредственно из файла конфигурации кластера, минуя любые интерфейсы 1С. Рассмотрим этот надежный метод подробнее:

  1. Откроем оснастку управления службами Windows (команда services.msc в строке «Выполнить»).
  2. Найдем службу «Агент сервера 1С:Предприятия 8.3» (1C:Enterprise 8.3 Server Agent) и остановим ее. Важно: на время остановки службы все пользователи других баз, расположенных на этом сервере, будут отключены, поэтому процедуру рекомендуется проводить во внерабочее время.
  3. Перейдем в уже знакомый нам каталог C:\Program Files\1cv8\srvinfo\reg_1541\.
  4. Перед внесением любых изменений обязательно создадим резервную копию файла 1CV8Clst.lst, скопировав его в безопасное место.
  5. Откроем оригинальный файл 1CV8Clst.lst в текстовом редакторе.
  6. Найдем описание базы "MT". Параметры блокировки представляют собой последовательность флагов (0 или 1), дат начала и окончания действия блокировки, а также текста сообщения. Флаг включения блокировки выглядит как цифра 1 в соответствующей позиции структуры. Если аккуратно заменить параметры блокировки на значения по умолчанию (перевести управляющий флаг в 0, очистить даты и строки сообщения), то платформа посчитает блокировку отключенной.
  7. Если структура файла кажется вам слишком сложной и вы боитесь нарушить синтаксис файла (что приведет к неработоспособности всего кластера), можно применить альтернативный прием: временно переместите файл 1CV8Clst.lst в другую папку, запустите службу сервера 1С (она создаст чистый файл конфигурации без баз), а затем заново добавьте базу в консоли администрирования. Однако ручное редактирование является более предпочтительным, так как сохраняет настройки остальных баз кластера.
  8. После сохранения изменений в файле запустим службу «Агент сервера 1С:Предприятия». Блокировка будет успешно снята.

Метод 4. Сброс списка пользователей 1С на уровне СУБД для доступа к консоли администрирования

Рассмотрим самую сложную ситуацию: база заблокирована, зайти в ее свойства в Консоли администрирования серверов 1С мы не можем, поскольку система требует логин и пароль администратора базы 1С, которые утеряны или не подходят. В то же время нам необходимо обновить пароль пользователя СУБД sa в настройках подключения базы данных 1С к SQL.

Для решения этой задачи мы можем временно отключить контроль учетных записей пользователей 1С на уровне базы данных Microsoft SQL Server. Разберем этот алгоритм по шагам:

  1. Запустим среду Microsoft SQL Server Management Studio (SSMS) на сервере баз данных.
  2. Авторизуемся под учетной записью администратора SQL-сервера (используя новый актуальный пароль sa или через Windows-авторизацию).
  3. Нажмем кнопку «Создать запрос» (New Query) и выполним следующий скрипт, который временно переименует таблицы пользователей 1С в базе данных 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С временно отключена.

  1. Откроем Консоль администрирования серверов 1С и перейдем к свойствам нашей базы данных MT.
  2. В появившемся окне авторизации администратора информационной базы оставим поля «Имя администратора» и «Пароль» абсолютно пустыми и нажмем «ОК». Консоль успешно предоставит нам доступ к свойствам базы.
  3. В открывшемся окне свойств базы данных выполним необходимые изменения:
    • В поле «Пароль пользователя СУБД» введем новый, актуальный пароль администратора SQL (sa).
    • Снимем флаг «Блокировка начала сеансов включена», чтобы полностью открыть доступ пользователям.
    • Нажмем «ОК» для сохранения внесенных изменений на сервере приложений 1С.
  4. Теперь нам необходимо вернуть список пользователей 1С в исходное состояние, чтобы не потерять учетные записи и разграничение прав доступа. Вернемся в среду SQL Server Management Studio и выполним обратный SQL-запрос:

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.


Рекомендации по профилактике подобных сбоев

Чтобы избежать повторения подобных инцидентов в будущем, рекомендуем соблюдать следующие правила администрирования:

Мы подробно разобрали все возможные варианты снятия блокировок и восстановления доступа к базам данных 1С. Выберите метод, который наиболее точно соответствует уровню прав доступа в вашей инфраструктуре, и аккуратно следуйте инструкциям.

← На главную