Часто бывает такая проблема — SQL Server не может авторизовать пользователя и сообщает примерно следующее:
Msg 18456, Level 14, State 1, Server ’server name’, Line 1
Login failed for user ‘user name’
И никаких подробностей об истинной причине отказа. К сожалению, SQL Server 2000 этим сообщением и ограничивается, однако Microsoft SQL Server 2005 научился более подробно описывать ситуацию. Для того, чтобы узнать, почему логин не прошел, необходимо посмотреть лог SQL сервера.
Вот пример записи лога, в котором описана проблема логина:
2006-02-27 00:02:00.34 Logon Error: 18456, Severity: 14, State: 8.
2006-02-27 00:02:00.34 Logon Login failed for user ‘‘. [CLIENT: ]
Нас интересует значение поля State. Ниже представлена таблица с расшифровкой некоторых значений этого поля.
ERROR STATE | ERROR DESCRIPTION |
---|---|
2 and 5 | Invalid userid |
6 | Attempt to use a Windows login name with SQL Authentication |
7 | Login disabled and password mismatch |
8 | Password mismatch |
9 | Invalid password |
11 and 12 | Valid login but server access failure |
13 | SQL Server service paused |
16 | User doesn’t have permission to log into the target database or database is not exist |
18 | Change password required |
27 | server could not determine the initial database for the session |
https://blogs.msdn.com/b/sql_protocols/archive/2006/02/21/536201.aspx