Как восстановить пароль sa в MS SQL Server и исправить ошибку 18456 при подключении базы 1С

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

При администрировании связки решений 1С:Предприятие и MS SQL Server системные администраторы часто сталкиваются с классической проблемой: база данных была развернута давно, пароль системного администратора СУБД (пользователя sa) утерян, а при попытке добавить новую информационную базу система требует авторизацию. Если же администратор пытается принудительно изменить пароль в MS SQL Server, то все существующие рабочие базы 1С мгновенно перестают функционировать, выдавая критическую ошибку СУБД с кодом 18456 (HRESULT=80040E4D).

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

Выясняем причину: почему падает подключение ко всем базам 1С при смене пароля?

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

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

Если мы заходим в SQL Server Management Studio (SSMS) и меняем пароль учетной записи sa напрямую в СУБД, происходит рассинхронизация:

  1. MS SQL Server ожидает подключений только с новым паролем.
  2. Сервер приложений 1С продолжает циклически обращаться к СУБД, используя старый сохраненный пароль.
  3. СУБД отклоняет эти попытки, фиксируя ошибку авторизации с кодом 18456 (Login failed for user 'sa').
  4. Из-за частых некорректных попыток входа (ведь к 1С пытаются подключиться десятки пользователей и фоновых заданий) учетная запись sa в MS SQL Server может быть заблокирована политикой безопасности Windows (Account Lockout Policy).

В результате пользователи видят окно с критической ошибкой: «Ошибка выполнения запроса POST к ресурсу /e1cib/login... Ошибка СУБД: Microsoft SQL Server Native Client: Ошибка входа пользователя 'sa'. HRESULT=80040E4D, SQLSrvr: SQLSTATE=28000, state=1, Severity=E, native=18456».

Шаг 1. Восстановление работы существующих баз через консоль 1С

Если вы уже сменили пароль в MS SQL Server и у вас «легли» все базы 1С, паниковать и переустанавливать СУБД не нужно. Нам достаточно обновить информацию о пароле в настройках кластера 1С. Разберем по шагам, как это сделать:

  1. Запустите утилиту «Администрирование серверов 1С:Предприятия» на сервере приложений.
  2. Раскройте дерево консоли до ветки «Информационные базы» вашего рабочего кластера.
  3. Найдите в списке базу данных, которая выдает ошибку при запуске, нажмите на нее правой кнопкой мыши и выберите пункт «Свойства».
  4. В открывшемся диалоговом окне найдите группу параметров подключения к СУБД.
  5. В поле «Пароль пользователя СУБД» введите новый актуальный пароль, который вы ранее установили в MS SQL Server для пользователя sa.
  6. Нажмите кнопку «ОК» или «Применить» для сохранения настроек.
  7. Повторите эту операцию для всех остальных информационных баз, которые используют этого пользователя для связи с СУБД.

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

Шаг 2. Как разблокировать учетную запись sa в MS SQL Server

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

  1. Запустите **SQL Server Management Studio (SSMS)** на сервере СУБД.
  2. Подключитесь к серверу, используя тип аутентификации «Проверка подлинности Windows» (Windows Authentication). Для этого вы должны быть авторизованы в операционной системе под учетной записью локального администратора сервера.
  3. В обозревателе объектов (Object Explorer) раскройте ветку «Безопасность» (Security) -> «Имена входа» (Logins).
  4. Найдите пользователя sa, нажмите на него правой кнопкой мыши и выберите «Свойства» (Properties).
  5. Перейдите на страницу «Состояние» (Status).
  6. Убедитесь, что переключатель «Состояние подключения к ядру СУБД» установлен в положение «Включить» (Enabled).
  7. Если активен флаг «Учетная запись заблокирована» (Login is locked out), снимите эту галочку.
  8. Перейдите на вкладку «Общие» (General), при необходимости повторно введите и подтвердите пароль в соответствующих полях, после чего нажмите «ОК».

Для гарантированного применения изменений рекомендуется перезапустить службу SQL Server через оснастку «Службы» (Services.msc) или SQL Server Configuration Manager.

Шаг 3. Как сбросить пароль sa, если он утерян окончательно

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

Способ А. Сброс через Windows-аутентификацию

По умолчанию при установке MS SQL Server группа локальных администраторов Windows добавляется в роль системных администраторов СУБД (sysadmin). Если эта настройка не была вручную изменена ранее, выполните следующие действия:

  1. Зайдите на сервер СУБД под учетной записью администратора Windows.
  2. Откройте SSMS и выберите «Проверка подлинности Windows». Нажмите «Соединить».
  3. После успешного входа перейдите в Безопасность -> Имена входа -> свойства пользователя sa.
  4. Задайте новый сложный пароль, подтвердите его и нажмите «ОК». Старый пароль вводить не требуется.

Способ Б. Сброс через однопользовательский режим (Single-User Mode)

Если авторизация по Windows-аутентификации не дает прав sysadmin или заблокирована, мы можем запустить службу MS SQL Server в специальном аварийном режиме обслуживания, который автоматически предоставляет права суперпользователя любому члену локальной группы администраторов операционной системы.

Рассмотрим этот процесс подробно:

  1. Остановите службу SQL Server. Для этого откройте командную строку от имени Администратора и выполните команду: net stop MSSQLSERVER Примечание: если у вас именованный экземпляр СУБД, используйте имя службы вида net stop MSSQL$ИМЯ_ЭКЗЕМПЛЯРА.
  2. Запустите службу SQL Server в однопользовательском режиме с параметром -m. Для этого в командной строке выполните: sqlservr.exe -m -s MSSQLSERVER Этот параметр разрешает только одно активное подключение к СУБД, предоставляя ему максимальные права.
  3. Откройте второе окно командной строки от имени Администратора и запустите консольную утилиту управления SQL: sqlcmd -S localhost
  4. В открывшемся интерфейсе ввода SQL-запросов выполните команды для смены пароля и разблокировки учетной записи:
    
    ALTER LOGIN sa WITH PASSWORD = 'MyNewComplexPassword123!';
    ALTER LOGIN sa ENABLE;
    GO
    
  5. Введите команду exit для выхода из утилиты sqlcmd.
  6. Вернитесь в первое окно командной строки и остановите процесс SQL Server, нажав комбинацию клавиш Ctrl + C, и подтвердите остановку.
  7. Запустите службу SQL Server в стандартном многопользовательском режиме: net start MSSQLSERVER

Теперь вы можете использовать новый пароль MyNewComplexPassword123! для авторизации пользователя sa и создания баз в 1С.

Рекомендации по безопасности и администрированию баз 1С на MS SQL Server

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

1. Никогда не используйте учетную запись sa для подключения баз 1С

Использование встроенной учетной записи системного администратора СУБД (sa) для работы рабочих баз 1С — это серьезная уязвимость. Если злоумышленник получит доступ к конфигурационным файлам сервера 1С или учетным данным подключения в консоли, он получит полный контроль над всем сервером баз данных, включая системные таблицы СУБД. Для аудита сохраненных учетных записей и проверки рисков извлечения паролей подойдёт обработка для аудита паролей СУБД в файлах кластера 1С.

Правильное решение: создайте выделенного пользователя СУБД с ограниченными правами специально для сервера 1С. Выполним это с помощью SQL-скрипта:


-- Создаем новое имя входа для сервера 1С
CREATE LOGIN usr1cv8 WITH PASSWORD = 'SecurePasswordFor1C_2026!';

-- Добавляем серверные роли, необходимые для создания баз из консоли 1С
ALTER SERVER ROLE dbcreator ADD MEMBER usr1cv8;
ALTER SERVER ROLE processadmin ADD MEMBER usr1cv8;
GO

Пользователь с ролью dbcreator сможет успешно создавать новые базы данных через консоль администрирования 1С, а роль processadmin позволит серверу 1С управлять процессами и блокировками в СУБД. При этом данный пользователь не будет иметь неограниченного доступа к системным настройкам самого SQL-сервера, что значительно повышает безопасность системы.

2. Настройте регулярное резервное копирование средствами СУБД вместо выгрузки в .dt

В сообщениях форума упоминается создание архивного файла с расширением .dt перед началом манипуляций. Важно понимать разницу:

Настройте планы обслуживания (Maintenance Plans) в MS SQL Server Management Studio для ежедневного создания полных резервных копий и ежечасного бэкапа журналов транзакций. Это гарантирует сохранность данных даже при полном отказе сервера приложений 1С. Дополнительно для автоматизации технического обслуживания парка баз и контроля их состояния можно использовать программу для пакетного архивирования и тестирования 1С с отправкой отчетов по электронной почте.

← На главную