无法登录到SQL Server + SQL Server身份验证+错误:18456

Sre*_*har 119 sql-server sql-server-2008

我在localhost\sql2008 Server上创建了登录帐户(例如User123)

映射到数据库(默认)

SQL Server上的身份验证模式设置为两者(Windows和SQL)

但登录到SQL Server失败,并显示以下消息(对于User123)

注意:已多次检查是否正确键入了UserName/Password

错误详情:

用户'User123'登录失败(Net.SqlClient数据提供程序)

服务器名称:localhost\sql2008错误号码:18456严重性:14状态:1行号:65536

对此有任何帮助.

Pra*_*uja 328

您需要启用SQL Server身份验证:

  1. 在对象资源管理器中,右键单击服务器并单击"属性"

DBMS属性对话框

  1. 在"服务器属性"窗口中,单击左侧页面列表中的"安全性".在"服务器身份验证"下,选择"SQL Server和Windows身份验证模式"单选选项.

SQL Server身份验证对话框

  1. 重新启动SQLEXPRESS服务.

  • 哦,谢谢你一百万次.主要用于上面的"重启"一词! (28认同)
  • 我知道这是旧的,但它完全救了我的屁股.谢谢Prateek.欣赏它.需要重启! (4认同)
  • 这个答案是多余的,对问题没用.OP已经确定"SQL Server上的身份验证模式设置为两者(Windows和SQL)". (4认同)
  • 如果OP明确指出"SQL Server上的身份验证模式设置为两者(Windows和SQL)",为什么这应该工作? (3认同)

Joe*_*itz 48

默认情况下,登录失败错误消息只是由于登录凭据不匹配而导致服务器拒绝客户端用户连接.您可能检查的第一个任务是查看该用户是否对该SQL Server实例和相关数据库具有相关权限,这很好.显然,如果没有设置必要的prvileges,那么你需要通过为该用户登录授予相关权限来解决该问题.

如果该用户在数据库和服务器上有相关授权,如果服务器遇到该登录的任何凭据问题,那么它将阻止将身份验证授予SQL Server,客户端将收到以下错误消息:

Msg 18456, Level 14, State 1, Server <ServerName>, Line 1
Login failed for user '<Name>'
Run Code Online (Sandbox Code Playgroud)

现在好了,通过查看错误消息,您觉得这对于理解级别和状态是非描述性的.默认情况下,无论验证登录时的问题性质如何,操作系统错误都会将"状态"显示为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>'.
Run Code Online (Sandbox Code Playgroud)

如上所述,错误的严重性和状态列是找到问题根源的准确反映的关键.在上述错误号为8的状态表示由于密码不匹配导致的身份验证失败.联机丛书指出:默认情况下,严重性低于19的用户定义消息在发生时不会发送到Microsoft Windows应用程序日志.因此,严重性低于19的用户定义消息不会触发SQL Server代理警报.

SQL Server Protocols(Dev.team)的程序经理Sung Lee概述了有关错误状态描述的更多信息:下表中提供了常见错误状态及其描述:

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>'.
Run Code Online (Sandbox Code Playgroud)

您可以看到没有从该SQL Server实例的错误日志定义的严重性或状态级别.所以下一个故障排除选项是查看事件查看器的安全日志[编辑,因为屏幕截图丢失,但你得到了

想法,在事件日志中查看有趣的事件].

  • 应该选择低于这个的优秀答案,而不是这个. (10认同)
  • @ void.pointer OP已经确定"SQL Server上的身份验证模式设置为两者(Windows和SQL)".所以下面的帖子与这个问题无关. (6认同)
  • 阅读下面的帖子. (4认同)

Nat*_*oop 42

我有同样的问题,但是因为我没有将服务器身份验证设置为"SQL Server和Windows身份验证模式"(你有)我只是想在这里提一下,万一有人在你的问题中错过了它.

你可以访问它

  • 右键单击实例(IE SQLServer2008)
  • 选择"属性"
  • 选择"安全"选项
  • 将"服务器身份验证"更改为"SQL Server和Windows身份验证模式"
  • 重新启动SQLServer服务
    • 右键单击实例
    • 点击"重启"

  • 我花了两个小时,因为我没有得到我需要重新启动整个服务器.对于这样的事情需要重新启动,这简直是疯了.微软对他们吐出的垃圾软件没有限制. (6认同)

小智 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"
Run Code Online (Sandbox Code Playgroud)

只为其他人阅读此内容:这也适用于2012 SQL Server.谢谢

  • 这不适用于OP,因为他提到"SQL Server上的身份验证模式设置为两者(Windows和SQL)". (4认同)