Как исправить ошибку «При входе в систему пользователя произошла ошибка» при создании базы 1С на MS SQL Server?

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

При развертывании новой информационной базы 1С:Предприятие в клиент-серверном варианте работы специалисты часто сталкиваются с системным сообщением: «При входе в систему пользователя произошла ошибка». На стороне системы управления базами данных (СУБД) MS SQL Server эта ошибка регистрируется в журнале событий под кодом 18456 (Login failed for user). Проблема может казаться мистической, особенно когда администратор может без проблем зайти под созданным пользователем через среду SQL Server Management Studio (SSMS), но сервер приложений 1С упорно отказывается устанавливать соединение.

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

1. Проверка на наличие опечаток в имени пользователя и пароле

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

Для исключения этой вероятности выполним следующие действия:

  1. Откроем простой текстовый редактор (например, Блокнот) и вручную напишем имя пользователя и пароль.
  2. Внимательно проверим раскладку клавиатуры (русская/английская), отсутствие случайных пробелов в начале или конце строк, а также состояние клавиши CapsLock.
  3. Скопируем подготовленные данные из текстового редактора и вставим их в соответствующие поля формы создания базы в 1С с помощью комбинации клавиш Ctrl+V.

2. Ошибка предварительного создания базы данных в СУБД

Частой ошибкой начинающих администраторов является предварительное создание пустой базы данных непосредственно в консоли SQL Server Management Studio (SSMS) с последующей попыткой указать эту базу при создании информационной базы через платформу 1С. Выясним, почему так делать не стоит.

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

Правильный порядок действий:

  1. Убедимся, что на сервере MS SQL Server отсутствует база данных с тем именем, которое мы планируем использовать для 1С. Если она была создана ранее в SSMS в качестве «тестовой» или «заготовки» — удалим ее.
  2. Запустим консоль администрирования серверов 1С:Предприятия или диалоговое окно добавления базы в стартере 1С.
  3. Заполним параметры подключения, указав имя новой базы данных. Платформа самостоятельно создаст базу в СУБД, зарегистрирует ее и создаст всю необходимую внутреннюю структуру таблиц.

3. Настройка режима проверки подлинности в SQL Server

По умолчанию при установке MS SQL Server очень часто выбирается режим «Только проверка подлинности Windows» (Windows Authentication Only). Если при создании базы из 1С вы указываете имя конкретного пользователя SQL (например, стандартного администратора СУБД sa или специально созданного пользователя), SQL Server отклонит подключение, так как в текущем режиме он не принимает учетные данные СУБД.

Разберем по шагам, как переключить сервер в смешанный режим аутентификации:

  1. Запустим утилиту SQL Server Management Studio (SSMS) и подключимся к нашему серверу баз данных под учетной записью администратора Windows.
  2. В обозревателе объектов (Object Explorer) нажмем правой кнопкой мыши на самый верхний элемент (корень сервера) и выберем пункт меню «Свойства» (Properties).
  3. В открывшемся окне перейдем на вкладку «Безопасность» (Security).
  4. В разделе «Проверка подлинности сервера» (Server authentication) переставим переключатель в положение «Проверка подлинности SQL Server и Windows» (SQL Server and Windows Authentication mode), который также называют смешанным режимом (Mixed Mode).
  5. Нажмем кнопку «ОК» для сохранения изменений.
  6. Важно: Для того чтобы изменения вступили в силу, необходимо перезапустить службу SQL Server. Для этого в обозревателе объектов SSMS нажмем правой кнопкой мыши на имя сервера и выберем пункт «Перезапустить» (Restart), либо сделаем это через стандартную оснастку «Службы» операционной системы Windows.

4. Предоставление необходимых прав пользователю SQL

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

Проанализируем роли, которые необходимо выдать нашей учетной записи в SQL Server:

Для назначения ролей в SSMS перейдем в ветку «Безопасность» (Security) -> «Имена входа» (Logins), откроем свойства нужного пользователя, перейдем на вкладку «Роли сервера» (Server Roles), отметим флагами нужные роли и сохраним изменения.

5. Особенности работы с именованными экземплярами (Named Instances)

Если на сервере развернут не стандартный экземпляр MS SQL Server (работающий по умолчанию на стандартном порту), а именованный экземпляр (например, бесплатная редакция SQLEXPRESS или специально названный инстанс MSSQLSERVER2016), то простое указание сетевого имени компьютера в поле «Сервер баз данных» в 1С гарантированно приведет к ошибке.

Рассмотрим правила адресации для таких конфигураций:

  1. В поле «Сервер баз данных» при создании базы 1С необходимо указывать имя сервера в строгом формате: ИмяКомпьютера\ИмяЭкземпляра (например, SQL-SRV\SQLEXPRESS или 127.0.0.1\MSSQLSERVER2016).
  2. Для работы именованных экземпляров на стороне сервера СУБД обязательно должна быть запущена служба SQL Server Browser (Обозреватель SQL Server). Эта служба отвечает за перенаправление входящих запросов клиентов на динамические порты, которые СУБД выделяет для именованных экземпляров. Проверьте статус этой службы в диспетчере служб Windows и переведите ее тип запуска в режим «Автоматически».

6. Отключенные сетевые протоколы в конфигурации СУБД

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

Активируем сетевые протоколы по следующему алгоритму:

  1. Откроем утилиту Диспетчер конфигурации SQL Server (SQL Server Configuration Manager).
  2. Развернем узел «Сетевая конфигурация SQL Server» (SQL Server Network Configuration) и выберем пункт «Протоколы для [Имя_Экземпляра]» (Protocols for...).
  3. В правой части окна найдем протокол TCP/IP. Если его состояние установлено в «Отключено» (Disabled), щелкнем по нему правой кнопкой мыши и выберем «Включить» (Enable).
  4. Аналогичным образом рекомендуется включить протокол «Общая память» (Shared Memory), если сервер 1С и SQL Server установлены локально на одном физическом компьютере — это значительно ускорит их взаимодействие.
  5. После изменения настроек протоколов обязательно выполним перезапуск службы SQL Server.

7. Блокировка сетевых портов брандмауэром (Firewall)

Если сервер 1С:Предприятия и сервер баз данных MS SQL Server физически разнесены по разным компьютерам в локальной сети, любые сетевые пакеты авторизации могут блокироваться встроенным брандмауэром Windows Defender Firewall или сторонним антивирусным ПО с функциями сетевого экрана.

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

Для быстрой настройки брандмауэра Windows выполним в командной строке (запущенной от имени администратора) следующие команды:


netsh advfirewall firewall add rule name="SQL Server" dir=in action=allow protocol=TCP localport=1433
netsh advfirewall firewall add rule name="SQL Browser" dir=in action=allow protocol=UDP localport=1434

8. Анализ кодов состояния ошибки (State) в логах SQL Server

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

Откроем SSMS, перейдем в раздел «Управление» (Management) -> «Журналы SQL Server» (SQL Server Logs) и откроем текущий лог. Найдем записи с кодом ошибки 18456 и проанализируем параметр State в тексте сообщения:

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

← На главную