При администрировании связки решений 1С:Предприятие и MS SQL Server системные администраторы часто сталкиваются с классической проблемой: база данных была развернута давно, пароль системного администратора СУБД (пользователя sa) утерян, а при попытке добавить новую информационную базу система требует авторизацию. Если же администратор пытается принудительно изменить пароль в MS SQL Server, то все существующие рабочие базы 1С мгновенно перестают функционировать, выдавая критическую ошибку СУБД с кодом 18456 (HRESULT=80040E4D).
В этой статье мы подробно разберем, почему возникает данная проблема, как оперативно восстановить работоспособность баз данных 1С без переустановки СУБД, а также рассмотрим безопасные и проверенные методы аварийного сброса пароля sa.
Проанализируем механизм взаимодействия сервера приложений 1С:Предприятие и системы управления базами данных. При первоначальном создании информационной базы в кластере 1С администратор указывает параметры подключения к SQL-серверу: имя сервера, имя базы данных, а также имя пользователя СУБД (часто ошибочно используется именно sa) и его пароль.
Эти параметры шифруются и сохраняются локально на сервере приложений 1С в служебных файлах конфигурации кластера (файлы с расширением .lst). В дальнейшем, когда пользователи запускают тонкий или толстый клиент 1С, сервер приложений самостоятельно авторизуется в MS SQL Server, используя сохраненные учетные данные.
Если мы заходим в SQL Server Management Studio (SSMS) и меняем пароль учетной записи sa напрямую в СУБД, происходит рассинхронизация:
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».
Если вы уже сменили пароль в MS SQL Server и у вас «легли» все базы 1С, паниковать и переустанавливать СУБД не нужно. Нам достаточно обновить информацию о пароле в настройках кластера 1С. Разберем по шагам, как это сделать:
sa.После сохранения параметров сервер приложений 1С начнет отправлять корректные запросы авторизации, и доступ к базам будет восстановлен мгновенно.
Если после обновления пароля в консоли 1С базы все равно выдают ошибку авторизации, вероятно, учетная запись sa заблокирована СУБД из-за слишком большого количества неудачных попыток входа со старым паролем. Разберем процесс разблокировки:
sa, нажмите на него правой кнопкой мыши и выберите «Свойства» (Properties).Для гарантированного применения изменений рекомендуется перезапустить службу SQL Server через оснастку «Службы» (Services.msc) или SQL Server Configuration Manager.
Рассмотрим худший сценарий: вам нужно добавить новую базу 1С, пароль от sa утерян, и вы не можете подключиться к MS SQL Server под учетной записью администратора СУБД. Утверждение о том, что в этом случае необходима переустановка SQL Server, является абсолютно неверным. Существует два стандартных и безопасных способа сброса.
По умолчанию при установке MS SQL Server группа локальных администраторов Windows добавляется в роль системных администраторов СУБД (sysadmin). Если эта настройка не была вручную изменена ранее, выполните следующие действия:
Если авторизация по Windows-аутентификации не дает прав sysadmin или заблокирована, мы можем запустить службу MS SQL Server в специальном аварийном режиме обслуживания, который автоматически предоставляет права суперпользователя любому члену локальной группы администраторов операционной системы.
Рассмотрим этот процесс подробно:
net stop MSSQLSERVER
Примечание: если у вас именованный экземпляр СУБД, используйте имя службы вида net stop MSSQL$ИМЯ_ЭКЗЕМПЛЯРА.
-m. Для этого в командной строке выполните:
sqlservr.exe -m -s MSSQLSERVER
Этот параметр разрешает только одно активное подключение к СУБД, предоставляя ему максимальные права.
sqlcmd -S localhost
ALTER LOGIN sa WITH PASSWORD = 'MyNewComplexPassword123!';
ALTER LOGIN sa ENABLE;
GO
exit для выхода из утилиты sqlcmd.
net start MSSQLSERVER
Теперь вы можете использовать новый пароль MyNewComplexPassword123! для авторизации пользователя 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-сервера, что значительно повышает безопасность системы.
В сообщениях форума упоминается создание архивного файла с расширением .dt перед началом манипуляций. Важно понимать разницу:
.dt — это логическая выгрузка данных, создаваемая платформой 1С. Она предназначена для переноса небольших баз данных между разными СУБД или файловым режимом. Использование .dt на средних и крупных базах объемом более 20-50 Гб неэффективно, так как процесс выгрузки нагружает сервер и может завершиться ошибкой из-за нехватки оперативной памяти. Более того, при повреждении структуры базы развернуть файл .dt часто бывает невозможно..bak) — это физические бэкапы, создаваемые непосредственно механизмами MS SQL Server. Они создаются в разы быстрее, поддерживают транзакционную целостность, позволяют выполнять инкрементное и разностное копирование, а также восстановление на определенный момент времени (Point-in-Time Recovery).Настройте планы обслуживания (Maintenance Plans) в MS SQL Server Management Studio для ежедневного создания полных резервных копий и ежечасного бэкапа журналов транзакций. Это гарантирует сохранность данных даже при полном отказе сервера приложений 1С. Дополнительно для автоматизации технического обслуживания парка баз и контроля их состояния можно использовать программу для пакетного архивирования и тестирования 1С с отправкой отчетов по электронной почте.