首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法登录到SQL Server + SQL Server身份验证+错误: 18456

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

Stack Overflow用户
提问于 2010-03-19 11:38:41
回答 8查看 411.7K关注 0票数 132

我已经在我的localhost\sql2008服务器上创建了登录帐户(例如,User123)

映射到数据库(默认)

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

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

注:我多次检查UserName / Password输入是否正确

错误详细信息:

用户'User123‘(Net.SqlClient数据提供程序)的

登录失败

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

有什么需要帮忙的吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-03-19 12:19:39

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

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

代码语言:javascript
复制
Msg 18456, Level 14, State 1, Server <ServerName>, Line 1
Login failed for user '<Name>'

好了,现在,通过查看错误消息,您会觉得这是非描述性的,无法理解级别和状态。默认情况下,无论登录身份验证问题的性质如何,操作系统错误都会将“State”显示为1。因此,为了进一步调查,您还需要查看相关的SQL Server实例错误日志,以了解有关此错误的严重性和状态的更多信息。您可以在log中查找相应的条目,如下所示:

代码语言:javascript
复制
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协议(Dev.team)的程序经理Sung Lee概述了有关错误状态描述的更多信息:下表提供了常见的错误状态及其描述:

代码语言:javascript
复制
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实例的错误日志中没有定义严重程度或状态级别。因此,下一个故障排除选项是查看事件查看器的安全日志[编辑,因为屏幕截图丢失,但您会看到

idea,在事件日志中查找有趣的事件]。

票数 53
EN

Stack Overflow用户

发布于 2011-05-25 20:22:34

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

  1. 在对象资源管理器中,右键单击服务器,然后单击"Properties"

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

  1. 重新启动SQLEXPRESS服务。
票数 352
EN

Stack Overflow用户

发布于 2010-07-31 04:28:53

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

您可以通过以下方式访问

  • 右键单击实例(IE SQLServer2008)
  • Select "Properties"
  • Select的“安全”选项,并将“服务器身份验证”更改为"SQL
  • Windows身份验证模式“,然后重新启动
  • SQLServer
    • 右键单击instance
    • Click "Restart"

票数 49
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2474839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档