MSSQL Error 18456: Login failed for user — Расшифровка всех State кодов
Ошибка 18456 (Severity 14) указывает на отказ в прохождении аутентификации на уровне сервера SQL Server. Точная причина всегда зашифрована во внутреннем коде состояния (State), который записывается только в серверный журнал ERRORLOG.
- Клиент получает обобщенное сообщение:
Login failed for user '%.*ls' (Error: 18456). - Служба кластера 1С:Предприятие не может подключиться к СУБД при старте рабочих процессов rphost.
- В ERRORLOG фиксируется:
Login failed for user 'sa'. Reason: Password did not match that for the login provided. [CLIENT: 192.168.1.50].
1. Получение точного кода State из SQL Server ERRORLOG
EXEC sys.sp_readerrorlog 0, 1, '18456';2. Полная таблица расшифровки State кодов ошибки 18456
| State | Причина сбоя | Метод устранения |
|---|---|---|
| State 1 | Скрытая ошибка (клиентская маскировка) | Смотрите реальный State в ERRORLOG сервера. |
| State 2 / 5 | Неверный логин пользователя (User ID doesn't exist) | Проверьте имя пользователя в строке подключения 1С. |
| State 6 | Попытка использовать имя Windows для SQL-логина | Смените тип аутентификации в клиенте. |
| State 7 | Отключенная учетная запись (Login is disabled) | ALTER LOGIN [user] ENABLE; |
| State 8 | Неверный пароль (Password mismatch) | Сбросьте пароль логина в SSMS или T-SQL. |
| State 11 / 12 | Логин валиден, но нет прав на доступ к серверу | GRANT CONNECT SQL TO [user]; |
| State 16 | Логин заблокирован политикой паролей Windows | ALTER LOGIN [user] WITH UNLOCK; |
| State 38 | База по умолчанию недоступна или удалена | ALTER LOGIN [user] WITH DEFAULT_DATABASE = [master]; |
| State 58 | Сервер настроен только на Windows Authentication | Включите Mixed Mode (SQL and Windows Authentication). |
3. Переключение сервера в смешанный режим аутентификации (Mixed Mode)
USE [master];
GO
EXEC xp_instance_regwrite
N'HKEY_LOCAL_MACHINE',
N'Software\Microsoft\MSSQLServer\MSSQLServer',
N'LoginMode',
REG_DWORD,
2;
GOПосле изменения режима аутентификации требуется перезапуск службы SQL Server!
4. Разблокировка и сброс пароля служебной учетной записи 1С
ALTER LOGIN [usr1cv8] WITH PASSWORD = 'YourStrongPassword123!', CHECK_POLICY = OFF;
ALTER LOGIN [usr1cv8] ENABLE;
ALTER LOGIN [usr1cv8] WITH DEFAULT_DATABASE = [master]; Частые вопросы (FAQ)
Почему клиенту всегда возвращается State 1, даже если пароль неверный?
В целях безопасности (Security by Obscurity) SQL Server возвращает клиентам обобщенный код State 1, чтобы злоумышленник не мог подобрать существующие логины. Истинный State всегда пишется в ERRORLOG.
Что делать при ошибке 18456 State 38?
Это означает, что у пользователя в качестве 'Default Database' указана база, которая была удалена, переведена в Offline или к которой у пользователя нет прав. Назначьте master: ALTER LOGIN [user] WITH DEFAULT_DATABASE = [master].
Почему после смены пароля sa 1С продолжает падать с 18456?
Пароль к СУБД хранится в зашифрованных файлах параметров баз кластера 1С (1CV8Clst.lst). Обновите параметры подключения к базе через консоль администрирования 1C.
Как временно отключить блокировку учетных записей политиками сложности Windows?
Выполните: ALTER LOGIN [user] WITH CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF.