Невозможно войти в SQL Server + Аутентификация SQL Server + Ошибка: 18456 - PullRequest
117 голосов
/ 19 марта 2010

Я создал учетную запись на моем сервере localhost \ sql2008 (например, User123)

Отображается в базу данных (по умолчанию)

Режим аутентификации на SQL Server установлен как (Windows, так и SQL)

Но не удается войти в SQL Server со следующим сообщением (для User123)

Примечание: несколько раз проверили, правильно ли введены имя пользователя / пароль

Сведения об ошибке:

Ошибка входа пользователя 'User123' (Поставщик данных Net.SqlClient)

Имя сервера: localhost \ sql2008 Ошибка Номер: 18456 Степень опасности: 14 Состояние: 1 Номер строки: 65536

любая помощь в этом, пожалуйста.

Ответы [ 5 ]

323 голосов
/ 25 мая 2011

Вам необходимо включить аутентификацию SQL Server:

  1. В обозревателе объектов щелкните правой кнопкой мыши сервер и выберите «Свойства»

DBMS Properties dialog

  1. В окне «Свойства сервера» нажмите «Безопасность» в списке страниц слева. В разделе «Проверка подлинности сервера» выберите параметр «Режим проверки подлинности SQL Server и Windows».

SQL Server Authentication dialog

  1. Перезапустите службу SQLEXPRESS.
46 голосов
/ 19 марта 2010

По умолчанию сообщение об ошибке сбоя при входе в систему представляет собой не что иное, как соединение пользователя с клиентом, которое было отклонено сервером из-за несоответствия учетных данных для входа. Первая задача, которую вы можете проверить, - проверить, есть ли у этого пользователя соответствующие привилегии для этого экземпляра SQL Server и соответствующей базы данных, это хорошо. Очевидно, что если необходимые привилегии не установлены, вам нужно исправить эту проблему, предоставив соответствующие привилегии для этого имени пользователя.

Несмотря на то, что если у этого пользователя есть соответствующие разрешения на базе данных и на сервере, если на сервере возникнут какие-либо проблемы с учетными данными для этого имени входа, это предотвратит возвращение проверки подлинности SQL Server, клиент получит следующее сообщение об ошибке:

Msg 18456, Level 14, State 1, Server <ServerName>, Line 1
Login failed for user '<Name>'

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

2007-05-17 00:12:00.34 Logon     Error: 18456, Severity: 14, State: 8.
or

2007-05-17 00:12:00.34 Logon     Login failed for user '<user name>'.

Как определено выше, столбцы «Серьезность и состояние» ошибки являются ключом к точному отражению источника проблемы. На вышеуказанной ошибке номер 8 для состояния указывает на сбой аутентификации из-за несоответствия пароля. К электронным книгам относятся: по умолчанию пользовательские сообщения с серьезностью ниже 19 не отправляются в журнал приложений Microsoft Windows при их появлении. Поэтому пользовательские сообщения со степенью серьезности ниже 19 не вызывают оповещения агента SQL Server.

Сунг Ли, руководитель программы в протоколах SQL Server (Dev.team), изложил дополнительную информацию об описании состояний ошибок: Состояния общих ошибок и их описания представлены в следующей таблице:

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
18                Change password required


Well I'm not finished yet, what would you do in case of error:

2007-05-17 00:12:00.34 Logon     Login failed for user '<user name>'.

Вы видите, что из журнала ошибок этого экземпляра SQL Server не определен уровень серьезности или уровень состояния. Таким образом, следующий вариант устранения неполадок - посмотреть журнал безопасности средства просмотра событий [править, потому что снимок экрана отсутствует, но вы получаете

идея, посмотрите в журнале событий интересные события].

42 голосов
/ 31 июля 2010

У меня была такая же проблема, однако моя была в том, что я не установил аутентификацию Сервера на «Режим аутентификации SQL Server и Windows» (что у вас было), я просто хотел упомянуть об этом здесь на случай, если кто-то пропустил ее в вашем вопросе. .

Вы можете получить к нему доступ

  • Щелкните правой кнопкой мыши экземпляр (IE SQLServer2008)
  • Выберите «Свойства»
  • Выберите опцию «Безопасность»
  • Измените «Проверка подлинности сервера» на «Режим проверки подлинности SQL Server и Windows»
  • Перезапустите службу SQLServer.
    • Щелкните правой кнопкой мыши на экземпляре
    • Нажмите «Перезагрузить»
18 голосов
/ 22 декабря 2012

Вы можете получить доступ к этому

Right click on instance (IE SQLServer2008)
Select "Properties"
Select "Security" option
Change "Server authentication" to "SQL Server and Windows Authentication mode"
Restart the SQLServer service
    Right click on instance
    Click "Restart"

Только для тех, кто читает это: у меня это работало и на SQL Server 2012. Спасибо

0 голосов
/ 02 мая 2018

Правильное решение проблемы - убедиться, что для вашего SQL Server включена аутентификация сервера SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...