无法登录到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

请对此提供任何帮助。


1
通过SqlServer管理控制台为用户测试sql和Windows身份验证访问,并查看是否可以使用上述帐户访问。您正在使用什么数据提供程序和连接字符串?
乔·皮茨

1
我正在尝试登录SSMS,但抛出上述错误。
Sreedhar'3

1
您可以以管理员帐户登录吗?
乔·皮茨

以管理员身份登录并检查您的事件日志。错误原因应在此处列出。在管理文件夹下查看
Joe Pitz 2010年

Answers:


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协议程序经理(Sev 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实例的错误日志中没有定义严重性或状态级别。因此,下一个故障排除选项是查看事件查看器的安全日志[编辑,因为缺少屏幕截图,但是您得到了

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


1
感谢您的配合,看看情况如何
Sreedhar 2010年

1
无效链接请考虑修改
克里斯·海斯

10
应该选择这个下面的上级答案,而不是这个。
void.pointer 2012年

4
阅读下面的帖子。
Levi Fuller

6
@ void.pointer OP已经确定“ SQL Server上的身份验证模式同时设置为Windows和SQL”。因此,以下帖子与该问题无关。
Manachi

336

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

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

DBMS属性对话框

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

SQL Server身份验证对话框

  1. 重新启动SQLEXPRESS服务。

29
哦,谢谢你一百万次。主要用于上面的单词“重启”!
Magnus Smith,

4
我知道这很老了,但它完全挽救了我的屁股。谢谢Prateek。欣赏它。需要重启!
Levi Fuller 2014年

3
如果OP明确指出“ SQL Server的身份验证模式设置为Windows和SQL都设置”,为什么这应该起作用?
蒂姆·施密特2014年

4
这个答案是多余的,对这个问题没有用。OP已确定“ SQL Server上的身份验证模式同时设置为Windows和SQL”。
Manachi

1
太棒了.. !! 谢谢PrateekSaluja
阿敏

44

我遇到了同样的问题,但是我的问题是因为我没有将服务器身份验证设置为“ SQL Server和Windows身份验证模式”(您已经拥有),我只是想在这里提到它,以防有人在您的问题中遗漏它。

您可以通过以下方式访问

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

6
我花了大约两个小时,因为没有得到,我需要重新启动整个服务器。这样的事情需要重新启动真是太疯狂了。微软对其吐出的垃圾软件没有限制。
注册用户

1
对于为什么无法连接到安装了SQL Server的Amazon EC2实例,这也是至关重要的答案。
Teoman shipahi 2013年

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"

只供其他人阅读:这在2012 SQL Server上也对我有用。谢谢


1
谢谢,这很完美,直截了当..接受的答案充满了很好的信息,但这对我有用。
托尼

4
这对OP不起作用,因为他提到“ SQL Server的身份验证模式同时设置为Windows和SQL)。
蒂姆·施密特


1

启用“ SQL Server和Windows身份验证模式”后,导航至以下内容。

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

最后重启SQL Server。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.