无法login到SQL Server + SQL Server身份validation+错误:18456年

我已经在我的localhost \ sql2008服务器上创build了login帐户(例如User123)

映射到数据库(默认)

SQL Server上的身份validation模式被设置为(Windows和SQL)

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

注:多次检查用户名/密码是否正确input

错误详情:

用户User123的login失败(Net.SqlClient数据提供程序)

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

请任何帮助。

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

尽pipe如果该用户在数据库和服务器上有相关的授权,如果服务器遇到该login的任何证书问题,那么它将阻止授权返回到SQL Server,客户端将得到以下错误消息:

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

现在好了,通过查看错误消息,您觉得这是非描述性的,以了解Level和状态。 默认情况下,操作系统错误将显示“状态”为1,无论authenticationlogin的问题的性质如何。 因此,要进一步调查,您还需要查看相关的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>'. 

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

SQL Server协议程序经理Sung Lee(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实例的错误日志中定义的严重性或状态级别。 所以下一个故障排除选项是看事件查看器的安全日志[编辑,因为屏幕截图丢失,但你得到的

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

您需要启用SQL Server身份validation:

  1. 在对象资源pipe理器中,右键单击服务器,然后单击“属性”

DBMS属性对话框

  1. 在“服务器属性”窗口中点击左侧页面列表中的“安全”。 在“服务器身份validation”下,select“SQL Server和Windows身份validation模式”无线电选项。

SQL Server身份验证对话框

  1. 重新启动SQLEXPRESS服务。

我有同样的问题,但是我的是因为我没有将服务器身份validation设置为“SQL Server和Windows身份validation模式”(你有),我只是想在这里提到,以防有人错过了你的问题。

你可以通过访问这个

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

你可以通过访问这个

 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" 

只为其他人阅读:这也适用于我2012年的SQL Server。 谢谢