Невозможно войти в SQL Server + проверка подлинности SQL Server + ошибка: 18456

121

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

Сопоставлено с базой данных (по умолчанию)

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

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

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

Детали ошибки:

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

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

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

SREEDHAR
источник
1
Протестируйте доступ для аутентификации sql и Windows через консоль управления SqlServer для пользователя и посмотрите, можете ли вы получить доступ с помощью указанной выше учетной записи. Какой поставщик данных и строку подключения вы используете?
Джо Питц
1
Я пытаюсь войти в систему SSMS, и это вызывает ошибку выше.
Sreedhar
1
Вы можете войти под учетной записью администратора?
Джо Питц
Войдите как администратор и проверьте журнал событий. Там должна быть указана причина ошибки. Загляните в папку управления
Джо Питц
Альтернатива, которая сработала для меня, была stackoverflow.com/questions/28090747/…
Марк Шультайс

Ответы:

49

По умолчанию сообщение об ошибке входа в систему не является не чем иным, как сервером отказано в подключении пользователя-клиента из-за несоответствия учетных данных для входа. Первая задача, которую вы можете проверить, - это увидеть, есть ли у этого пользователя соответствующие привилегии на этом экземпляре 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 (команда разработчиков), изложил дополнительную информацию об описании состояния ошибки: Общие состояния ошибок и их описания представлены в следующей таблице:

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 не определен уровень серьезности или состояния. Таким образом, следующий вариант устранения неполадок - просмотреть журнал безопасности программы просмотра событий [редактировать, потому что снимок экрана отсутствует, но вы получаете

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

Джо Питц
источник
1
Спасибо, посмотрю и посмотрим, как это будет
Сридхар
1
мертвая ссылка, пожалуйста, подумайте о пересмотре
Chris Hayes
10
Следует выбрать лучший ответ ниже этого, а не этот.
void.pointer 06
4
Прочтите пост ниже.
Леви Фуллер
6
@ void.pointer OP уже установил, что «Режим аутентификации на SQL Server установлен на оба (Windows и SQL)». Так что пост ниже не имеет отношения к этому вопросу.
Manachi
336

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

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

Диалог свойств СУБД

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

Диалог проверки подлинности SQL Server

  1. Перезапустите службу SQLEXPRESS.
PrateekSaluja
источник
29
О, СПАСИБО миллион раз. В основном за слово "перезагрузка" выше!
Магнус Смит
4
Я знаю, что это старое, но это полностью спасло мою задницу. Спасибо, Пратик. Ценить это. НЕОБХОДИМО перезапустить!
Леви Фуллер
3
Почему это должно работать, если OP явно указывает, что «Режим аутентификации на SQL Server установлен на оба (Windows и SQL)»?
Тим Шмелтер
4
Этот ответ является избыточным и бесполезным для вопроса. OP уже установил, что «Режим аутентификации на SQL Server установлен на оба (Windows и SQL)».
Manachi
1
Это было потрясающе .. !! Спасибо PrateekSaluja
Amin Sayed
44

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

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

  • Щелкните правой кнопкой мыши экземпляр (IE SQLServer2008)
  • Выберите "Свойства"
  • Выберите вариант «Безопасность».
  • Измените «Проверка подлинности сервера» на «Режим проверки подлинности SQL Server и Windows»
  • Перезапустите службу SQLServer.
    • Щелкните правой кнопкой мыши экземпляр
    • Нажмите "Перезагрузить".
Натан Куп
источник
6
Я потратил около двух часов, потому что не понимал, что мне нужно ПЕРЕЗАГРУЗИТЬ весь сервер. Просто безумие, что для таких вещей нужна перезагрузка. У Microsoft нет ограничений на то, что они выплевывают.
Зарегистрированный пользователь
1
Это также важный ответ на вопрос, почему не удается подключиться к экземпляру Amazon EC2, на котором установлен SQL-сервер.
Теоман Шипахи
19

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

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. Спасибо

Барри
источник
1
Спасибо, это было идеально, прямо к делу ... принятый ответ наполнен хорошей информацией, но это то, что сработало для меня.
Тони
4
Это не может работать для OP, поскольку он упомянул, что «Режим аутентификации на SQL Server установлен на оба (Windows и SQL)».
Тим Шмелтер
1

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

Дипеш Баджрачарья
источник
1

После включения «SQL Server и режима проверки подлинности Windows» перейдите к следующему.

  1. Управление компьютером (в меню Пуск)
  2. Услуги и приложения
  3. Диспетчер конфигурации SQL Server
  4. Сетевая конфигурация SQL Server
  5. Протоколы для MSSQLSERVER
  6. Щелкните правой кнопкой мыши TCP / IP и включите его.

Наконец перезапустите SQL Server.

Vasudev
источник