默认情况下,登录失败错误消息是什么,但是由于登录凭据不匹配,服务器拒绝了客户端用户连接。您可能要检查的第一个任务是查看该用户在该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实例的错误日志中没有定义严重性或状态级别。因此,下一个故障排除选项是查看事件查看器的安全日志[编辑,因为缺少屏幕截图,但是您得到了
想法,请在事件日志中查找有趣的事件]。