无法登录到SQL服务器+SQL服务器认证+错误。18456

我在我的localhost/sql2008服务器上创建了登录账户(例如:User123)。

映射到数据库(默认)。

SQL服务器上的认证模式被设置为两者(Windows和SQL)。

但登录SQL服务器失败,出现以下信息(对于User123)

注意:我已经多次检查用户名和密码是否正确输入。

错误细节。

用户'User123&#39.的登录失败。 (Net.SqlClient Data Provider)

服务器名称:localhost/sql2008错误 编号:18456 严重程度:14 状态:1 行数 : 65536

请提供任何帮助。

你需要启用SQL Server认证。

1.在对象资源管理器中,右击服务器并点击"属性&quot。

2.在"服务器属性"窗口中,在左边的页面列表中点击"安全"。在"服务器认证"下选择"SQL服务器和Windows认证模式"单选。

3.重新启动SQLEXPRESS服务。

评论(18)
解决办法

默认情况下,登录失败的错误信息只是一个客户端用户连接被服务器拒绝,原因是登录凭证不匹配。你可以检查的第一个任务是看该用户在该SQL Server实例和相关数据库上是否有相关权限,这很好。显然,如果必要的权限没有被设置,那么你需要通过授予该用户登录的相关权限来解决这个问题。

尽管如果该用户在数据库和amp上有相关的权限,但如果服务器遇到该登录的任何凭证问题,那么它将阻止向SQL服务器授予认证,客户端将得到以下错误信息。

Msg 18456, Level 14, State 1, Server , Line 1
Login failed for user ''

好了,现在怎么办,通过看错误信息,你觉得这是非描述性的,可以理解为Level & 状态。默认情况下,操作系统错误会显示'状态'为1,而不考虑验证登录时的问题性质。因此,为了进一步调查,你需要查看相关的SQL Server实例错误日志,以获得更多关于此错误的严重程度和amp; 状态的信息。你可以查看一下日志中的相应条目。

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

正如上面所定义的,错误的严重程度& 状态列是找到问题来源的准确反映的关键。在上面的错误中,8号状态表示由于密码不匹配导致的认证失败。书籍在线参考。默认情况下,严重程度低于19的用户定义信息在发生时不会被发送到微软Windows应用程序日志中。因此,严重程度低于19的用户定义的消息不会触发SQL Server Agent警报。

SQL Server协议(Dev.team)的项目经理Sung Lee概述了关于错误状态描述的进一步信息:常见的错误状态及其描述在下表中提供。

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

你可以看到没有从该SQL Server实例'的错误日志中定义严重程度或状态级别。 因此,下一个故障排除选项是查看事件查看器的安全日志[编辑,因为屏幕截图丢失,但你可以得到

意思,在事件日志中寻找有趣的事件]。

评论(9)

我也有这样的问题,不过我的问题是因为我没有把服务器认证设置为"SQL Server和Windows认证模式"(你有),我只是想在这里提一下,以防有人在你的问题中漏掉。

你可以通过以下方式访问它

  • 在实例上点击右键(IE SQLServer2008)。
  • 选择"属性"
  • 选择"安全"选项
  • 将"服务器认证"改为"SQL服务器和Windows认证模式&quot。
  • 重新启动SQLServer服务
  • 在实例上点击右键
  • 点击"重启&quot。
评论(2)