Ошибка 18456 и Hresult=80040E4D при добавлении базы на сервере 1С: причины и решение

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

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

В этой статье мы подробно разберем ситуацию, когда при попытке создания базы появляется ошибка с кодом Hresult=80040E4D и нативным кодом SQL Server 18456 — для диагностики подобных проблем пригодится анализ технологического журнала для поиска технических ошибок. Мы проанализируем причины возникновения этой ошибки, разберем различия в режимах аутентификации и пошагово настроим MS SQL Server для корректной работы с платформой 1С.

Анализ ошибки и симптомы

Рассмотрим типичный сценарий. Вы установили MS SQL Server (например, версию 2016 или новее) и кластер серверов 1С. В консоли "Администрирование серверов 1С" вы успешно подключились к центральному серверу, видите ветки кластера, но при попытке создать новую информационную базу процесс прерывается следующей ошибкой:


Ошибка создания информационной базы
Ошибка операции администрирования
Ошибка при выполнении операции с информационной базой
Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: Login failed for user 'sa'.
Hresult=80040E4D, SQLSTATE = 28000, State = 1, Severity = E, native = 18456, Line = 1

Давайте разберем, что означают эти коды, чтобы понимать суть проблемы:

  1. native = 18456: Это стандартный код ошибки MS SQL Server, означающий "Login failed" (Ошибка входа). Сервер отклонил попытку подключения.
  2. SQLSTATE = 28000: Стандартный код состояния SQL, также указывающий на ошибку авторизации.
  3. State = 1: Это самый важный, но в то же время самый коварный параметр. Состояние 1 используется SQL Server'ом для маскировки реальной причины ошибки из соображений безопасности. Чтобы злоумышленник не мог перебором узнать, существует ли пользователь, сервер выдает общее состояние "1". Реальная причина (неверный пароль, отключенная учетная запись, недопустимый режим аутентификации) записывается только в журнал ошибок (Error Log) самого SQL Server.

Таким образом, мы выяснили, что проблема не в самой 1С, а в том, как сервер 1С пытается авторизоваться на SQL-сервере. Разберем основные причины и способы их устранения.

Причина 1: Неверный режим аутентификации MS SQL Server

При установке MS SQL Server по умолчанию часто предлагается режим Windows Authentication mode. В этом режиме к SQL-серверу могут подключаться только доменные или локальные пользователи Windows, добавленные в списки доступа.

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

Решение: Включение смешанной аутентификации

Нам необходимо переключить сервер в режим SQL Server and Windows Authentication mode (Смешанный режим). Выполним следующие действия:

  1. Запустите SQL Server Management Studio (SSMS) и подключитесь к вашему экземпляру (обычно используя текущую учетную запись Windows).
  2. В обозревателе объектов (Object Explorer) нажмите правой кнопкой мыши на корневой элемент (имя сервера) и выберите пункт Properties (Свойства).
  3. Перейдите на вкладку Security (Безопасность).
  4. В блоке "Server authentication" выберите переключатель SQL Server and Windows Authentication mode.
  5. Нажмите "OK".

Важно: После изменения этого параметра система сообщит, что изменения вступят в силу только после перезапуска службы. Обязательно перезапустите службу SQL Server (через контекстное меню в SSMS "Restart" или через "Службы" Windows).

Причина 2: Проблемы с учетной записью 'sa'

В сообщении об ошибке часто фигурирует пользователь sa. Это встроенная учетная запись администратора SQL Server (System Administrator). Даже если вы включили смешанный режим, с пользователем sa могут быть следующие проблемы:

Решение: Настройка пользователя sa

Проверим и настроим пользователя через Management Studio:

  1. В обозревателе объектов раскройте ветку Security (Безопасность) -> Logins (Имена входа).
  2. Найдите пользователя sa. Если на иконке пользователя есть маленькая красная стрелка вниз, значит, он отключен.
  3. Нажмите правой кнопкой мыши на sa и выберите Properties (Свойства).
  4. На вкладке General (Общие) можно задать новый пароль. Рекомендуем снять галочку Enforce password policy (Требовать соблюдения политики паролей) для тестовых сред, чтобы избежать проблем с истечением срока действия пароля.
  5. Перейдите на вкладку Status (Состояние).
  6. В блоке "Permission to connect to database engine" (Разрешение на подключение) должно стоять Grant (Предоставить).
  7. В блоке "Login" (Вход в систему) должно стоять Enabled (Включено).
  8. Нажмите "OK".

После этих действий попробуйте авторизоваться в самом Management Studio под пользователем sa, чтобы убедиться, что логин и пароль работают корректно.

Причина 3: Сетевые протоколы (TCP/IP)

Сервер 1С:Предприятия подключается к SQL Server через протокол TCP/IP. Если вы используете редакцию SQL Server Developer или Express, протокол TCP/IP может быть отключен по умолчанию после установки. В этом случае, даже при верном логине и пароле, подключение может не устанавливаться, или возникать ошибки на этапе рукопожатия.

Решение: Включение TCP/IP

  1. Откройте SQL Server Configuration Manager (Диспетчер конфигурации SQL Server).
  2. Раскройте ветку SQL Server Network Configuration (Сетевая конфигурация).
  3. Выберите Protocols for [ИМЯ_ВАШЕГО_ЭКЗЕМПЛЯРА].
  4. В правой части окна найдите протокол TCP/IP. Если его статус "Disabled" (Отключено), нажмите правой кнопкой и выберите Enable (Включить).
  5. Также зайдите в свойства протокола TCP/IP на вкладку "IP Addresses". Убедитесь, что в разделе IPAll поле "TCP Port" установлено в значение 1433 (стандартный порт), и очищено поле "TCP Dynamic Ports".
  6. После изменения настроек снова перезапустите службу SQL Server (SQL Server Service).

Альтернативный способ создания базы

Если по какой-то причине создание базы непосредственно из консоли 1С все еще вызывает трудности (например, из-за нехватки прав у пользователя SQL на создание файлов в системных папках), можно пойти обратным путем: сначала создать базу данных средствами SQL, а затем подключить её к 1С.

Рассмотрим этот процесс пошагово:

  1. Зайдите в SQL Server Management Studio.
  2. Нажмите правой кнопкой на "Databases" -> "New Database".
  3. Задайте имя базы (например, base1c_test) и настройте параметры файлов, если это необходимо. Нажмите "OK".
  4. Теперь откройте консоль Администрирование серверов 1С.
  5. Создайте новую информационную базу.
  6. В поле "Имя базы данных" (в блоке параметров СУБД) укажите точное имя, которое вы задали в SQL (base1c_test).
  7. Укажите пользователя СУБД (sa) и его пароль.
  8. Снимите галочку "Создать базу данных в случае ее отсутствия" (хотя, если база уже есть, 1С просто подключится к ней, но лучше контролировать процесс).

Этот метод позволяет исключить проблемы с правами пользователя sa на создание файлов (роль dbcreator), так как база уже создана администратором.

Резюме

Ошибка 18456 при создании базы 1С — это почти всегда проблема настроек доступа на стороне SQL Server. Для успешного решения задачи убедитесь, что:

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

← На главную