[译]SQL2005/2008错误18456 登录失败的 解决方案

Troubleshooting Login failed Error 18456

原文
http://sql-articles.com/articles/troubleshooting/troubleshooting-login-failed-error-18456Written

附件:
下载文件 点击下载此文件

当使用sqlserver的用户登录的时候都会出现这个详错误代码为18456的错误.而详细信息则需要通ap_readerrorlog这个去获取.在这篇文章里,我将带你去查看产生此错的不同情况及相应的解决方案.

State1:

这个错误发生在sql server2000用户登录时,在sql的error logs日志里几乎没有很多的错误原因描述.这个问题的解决也比较棘手.但如果是sql server2005的话,每一次的登录失败都有一次一定的描述来判定是哪种情况导致登录失败.




STATE 2 & 5:

这种错误产生的主要原因是登录的用户不存在SQL SERVER中.这个错误主要发生在用户指定了一个错误的用户或拼写用户名出现错误时产生..我在我的SQL 2005实例中测试一个不存在的用户名,看到的就是如下的错误截图,日志中也有比较详细的记录.




2009-10-08 10:57:30.520 Logon Errors: 18456, Severity: 14, State: 5.
2009-10-08 10:57:30.520 Logon Login failed for user 'DOESNTEXIST'. [CLIENT: ]


STATE 6:

这种情况主要发生在用户希望windows帐户去直接访问数据库却在数据库用户中指定了一个SQL帐号.这样导致不能例如 .我使用一个windows帐户(dl7728\test)去例如,但是我在帐户中又指定了一个用户名,所以导致登录失败,让我们看看日志里是如何描述的.



2009-10-08 11:05:47.180 Logon Error: 18456, Severity: 14, State: 6.
2009-10-08 11:05:47.180 Logon Login failed for user 'dl7728\test'. [CLIENT: ]


STATE 7 & 8:

如果是SA的登录密码的错误,则会出错state为7.其它的登录方式也则state为8




2009-10-08 11:14:18.440 Logon Error: 18456, Severity: 14, State: 8.
2009-10-08 11:14:18.440 Logon Login failed for user 'docsadm'. [CLIENT: ]

STATE 9:

出现state9的错误则意味着密码可能是因为密码策略将密码认为是一个无效的密码.这个API的策略 更多的请查看链接

http://msdn.microsoft.com/library/default.asp?url=/library/enus/netmgmt/netmgmt/net_validate_output_arg.asp.

STATE 11 &12:

这种情况意味着通过域登录SQL Server的方式失败,即使可以通过域登录到操作系统,但还是不能登录进sql server.要想解决这个问题,则需要在域登录sql中赋予有登录的权限才行.

2009-10-08 12:24:01.470 Logon Error: 18456, Severity: 14, State: 11.
2009-10-08 12:24:01.470 Logon Login failed for user ‘X\s_aa’. [CLIENT: ]


STATE 13

这种情况主要是因为某些sql sever的服务停止了而产生.,也有可能产生错误代码为17142的错误





2009-10-08 12:31:28.620 spid57 Error: 17142, Severity: 14, State: 0.
2009-10-08 12:31:28.620 spid57 SQL Server service has been paused. No new connections will be allowed. To resume the service, use SQL Computer Manager or the Services application in Control Panel.
2009-10-08 12:31:28.620 Logon Error: 18456, Severity: 14, State: 13.
2009-10-08 12:31:28.620 Logon Login failed for user ''. [CLIENT: ]


STATE 16:

这种情况主要发生在sql server中的默认数据库不可用(删除或停止的情况).这个错误在SSMS的窗口中显示的是4064的错误代码.其它产的操作日志却记录为18456





2009-10-08 13:01:49.410 Logon Error: 18456, Severity: 14, State: 16.
2009-10-08 13:01:49.410 Logon Login failed for user 'aaa'. [CLIENT: ] .

这种情况可能通过将默认数据库启用或设置其它数据库为默认的数据库,重新例如就可以解决.


还有其它的state状态需要说明,但是我这里不能表述得很细致

STATE 18:

这种情况主要在刚刚增加的sql用户需要修改他的第一次密码的时候弹出错误代码.

STATE 38:

这种情况主要发生在默认的数据库在sql2008或sql2008R2K中不可用

STATE 40:

这种情况主要发生在sql2008或sql2008R2下,在创建了一个新的登录帐号并赋予给默认数据库的时候,数据库恰好处于停止状态或不可用的时候所创建的帐户.

[本日志由 admin 于 2011-04-12 11:41 PM 编辑]
上一篇: 北京五日行.鸟巢.798
下一篇: 越知道时间的价值,就越感到失时的痛苦
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 错误18456 18456
相关日志:
评论: 0 | 引用: 0 | 查看次数: 10889
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 30 字 | UBB代码 关闭 | [img]标签 关闭