При развертывании новой информационной базы 1С:Предприятие в клиент-серверном варианте работы специалисты часто сталкиваются с системным сообщением: «При входе в систему пользователя произошла ошибка». На стороне системы управления базами данных (СУБД) MS SQL Server эта ошибка регистрируется в журнале событий под кодом 18456 (Login failed for user). Проблема может казаться мистической, особенно когда администратор может без проблем зайти под созданным пользователем через среду SQL Server Management Studio (SSMS), но сервер приложений 1С упорно отказывается устанавливать соединение.
В этой статье мы подробно разберем все возможные технические причины возникновения этой ошибки — от банальных опечаток до тонких сетевых настроек СУБД, прав доступа и конфигурации брандмауэра. Мы рассмотрим пошаговые инструкции по устранению неполадок, которые помогут вам быстро и правильно настроить связку «1С:Предприятие — MS SQL Server». Для диагностики взаимодействия платформы с СУБД можно использовать обработку для анализа настроек и проблем SQL Server.
Как показывает практика и обсуждения на технических форумах, в огромном количестве случаев виновником проблемы становится банальный человеческий фактор. Опечатка в имени пользователя SQL или его пароле при заполнении параметров создания информационной базы в 1С — классический сценарий. Ситуация усложняется тем, что при вводе пароля в интерфейсе 1С символы скрыты маской, и визуально проверить корректность ввода невозможно.
Для исключения этой вероятности выполним следующие действия:
CapsLock.Ctrl+V.Частой ошибкой начинающих администраторов является предварительное создание пустой базы данных непосредственно в консоли SQL Server Management Studio (SSMS) с последующей попыткой указать эту базу при создании информационной базы через платформу 1С. Выясним, почему так делать не стоит.
Платформа 1С:Предприятие не умеет работать со сторонними пустыми базами данных СУБД, в которых отсутствует необходимая структура служебных таблиц. При попытке инициализации новой базы сервер 1С должен сам отправить SQL-запрос на создание базы данных «с нуля». Если база с таким именем уже существует в SQL Server, алгоритмы инициализации могут дать сбой, вызвав общую ошибку авторизации или структуры.
Правильный порядок действий:
По умолчанию при установке MS SQL Server очень часто выбирается режим «Только проверка подлинности Windows» (Windows Authentication Only). Если при создании базы из 1С вы указываете имя конкретного пользователя SQL (например, стандартного администратора СУБД sa или специально созданного пользователя), SQL Server отклонит подключение, так как в текущем режиме он не принимает учетные данные СУБД.
Разберем по шагам, как переключить сервер в смешанный режим аутентификации:
Чтобы сервер 1С мог успешно инициализировать и создать базу данных внутри СУБД, пользователю SQL, под которым выполняется подключение, требуются соответствующие административные полномочия на уровне всего сервера баз данных. Простого доступа к конкретной таблице или схеме здесь недостаточно.
Проанализируем роли, которые необходимо выдать нашей учетной записи в SQL Server:
dbcreator — важнейшая серверная роль. Она дает пользователю право создавать, изменять, удалять и восстанавливать любые базы данных на этом сервере СУБД. Без этой роли сервер 1С физически не сможет отправить команду CREATE DATABASE.processadmin — данная роль позволяет пользователю управлять процессами, запущенными в SQL Server. Это необходимо серверу приложений 1С для корректного управления сеансами, принудительного отключения «зависших» соединений и оптимизации работы с пулом подключений.sysadmin — роль суперпользователя (аналог root/administrator). В целях диагностики или в локальных тестовых средах разработчики часто дают пользователю максимальные права sysadmin. Однако из соображений безопасности в рабочих («боевых») системах настоятельно рекомендуется ограничиваться минимально необходимым набором ролей: dbcreator и processadmin.Для назначения ролей в SSMS перейдем в ветку «Безопасность» (Security) -> «Имена входа» (Logins), откроем свойства нужного пользователя, перейдем на вкладку «Роли сервера» (Server Roles), отметим флагами нужные роли и сохраним изменения.
Если на сервере развернут не стандартный экземпляр MS SQL Server (работающий по умолчанию на стандартном порту), а именованный экземпляр (например, бесплатная редакция SQLEXPRESS или специально названный инстанс MSSQLSERVER2016), то простое указание сетевого имени компьютера в поле «Сервер баз данных» в 1С гарантированно приведет к ошибке.
Рассмотрим правила адресации для таких конфигураций:
ИмяКомпьютера\ИмяЭкземпляра (например, SQL-SRV\SQLEXPRESS или 127.0.0.1\MSSQLSERVER2016).При стандартной установке MS SQL Server (особенно редакций Express) протоколы сетевого взаимодействия могут быть отключены в целях безопасности. Если сервер приложений 1С и СУБД находятся на разных машинах (или даже на одной, но обращение идет по сетевому имени), отключенный протокол TCP/IP заблокирует любую попытку авторизации.
Активируем сетевые протоколы по следующему алгоритму:
Если сервер 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
Если вы выполнили все вышеописанные шаги, но ошибка «При входе в систему пользователя произошла ошибка» продолжает появляться, обратимся к самому надежному источнику информации — журналу ошибок MS SQL Server. СУБД всегда фиксирует неуспешные попытки авторизации и снабжает их числовым кодом состояния (State), который позволяет локализовать проблему со стопроцентной точностью.
Откроем SSMS, перейдем в раздел «Управление» (Management) -> «Журналы SQL Server» (SQL Server Logs) и откроем текущий лог. Найдем записи с кодом ошибки 18456 и проанализируем параметр State в тексте сообщения:
master). Проверьте свойства пользователя в SSMS на вкладке «Общие» (General) — поле «База данных по умолчанию» (Default database).Таким образом, последовательно проанализировав ситуацию, проверив корректность ввода учетных данных, режим работы СУБД, роли пользователя и сетевую доступность портов, мы сможем гарантированно решить проблему со входом пользователя и успешно создать информационную базу 1С. Для комплексной проверки параметров конфигурации можно использовать инструмент для аудита настроек СУБД под требования 1С.