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

我已经在本地主机 sql2008服务器上创建了登录帐户(例如 User123)

映射到数据库(默认)

SQLServer 上的身份验证模式同时设置为(Windows 和 SQL)

但是登录到 SQLServer 失败,并出现以下消息(针对 User123)

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

错误详情:

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

服务器名称: localhost sql2008错误 编号: 18456严重程度: 14州: 1 电话号码: 65536

有什么需要帮忙的吗。

427688 次浏览

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

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

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

现在,通过查看错误消息,您会觉得这是非描述性的,无法理解 Level & state。默认情况下,操作系统错误将显示“ State”为1,而不管验证登录时出现的问题的性质如何。因此,为了进一步研究,您还需要查看相关的 SQLServer 实例错误日志,以获得有关此错误的严重性和状态的更多信息。您可以在日志中查看相应的条目:

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的用户定义消息在发生时不会发送到 MicrosoftWindows 应用程序日志。因此,严重性小于19的用户定义消息不会触发 SQLServer 代理警报。

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>'.

您可以看到,没有从该 SQLServer 实例的错误日志中定义严重性或状态级别。因此,下一个故障排除选项是查看事件查看器的安全日志[ edit because screen shot is lost but you get the

想法,在事件日志中寻找有趣的事件]。

我也有同样的问题,但是我的问题是因为我没有把服务器身份验证设置为“ SQL Server 和 Windows 身份验证模式”(你已经有了) ,我只是想在这里提一下,以防有人在你的问题中漏掉了。

你可以通过

  • 右键单击 instance (IESQLServer2008)
  • 选择「属性」
  • 选择「保安」选项
  • 将“服务器身份验证”更改为“ SQLServer 和 Windows 身份验证模式”
  • 重新启动 SQLServer 服务
    • 右键单击实例
    • 点击“重启”

需要启用 SQLServer 身份验证:

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

DBMS Properties dialog

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

SQL Server Authentication dialog

  1. 重新启动 SQLEXPRESS 服务。

你可以通过

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"

仅供其他读者参考: 这对我在2012SQLServer 上也很有用。 谢谢

问题的正确解决方案是确保为 SQLServer 打开了 SQLServer 身份验证。

启用“ SQLServer 和 Windows 身份验证模式”(请检查上面关于如何进行身份验证的答案)后,导航到以下位置。

  1. 计算机管理(在开始菜单中)
  2. 服务及应用
  3. SQLServer 配置管理器
  4. SQLServer 网络配置
  5. MSSQLSERVER 协议
  6. 右键单击 TCP/IP 并启用它。

最后重新启动 SQLServer。

如果您不使用 SQLServer 的 重新开始,那么所有解决方案都不会起作用。

找到 SQLServerManager13.msc

然后在 SQL Server Services部分选择 SQL Server并重新启动它。

或者

MS SQL Server Management StudioObject Explorer菜单中选择您的服务器。

上面有 Right clickrestart

在花费了很长时间并尝试了每一页上的每一条建议之后,这解决了我的问题:

[服务器名称] > 安全 > 登录 > [登入名称] > 右击 > 物业 > 状态 > SQLServer 身份验证

有一个复选框 Login is locked out。它被检查,并阻止我登录。我没有勾选复选框,我的问题就解决了。