如果服务器遇到阻止登录成功的错误,客户端将显示以下错误消息。
Msg 18456, Level 14, State 1, Server <server name>, Line 1
Login failed for user '<user name>'
- 这通常意味着您的连接请求已成功接收到您指定的服务器名称,但由于多种原因,该服务器无法授予您访问权限并引发错误:18456。
- 有时,此事件ID还提供状态1,但实际上并没有什么用处,因为出于安全原因,除非您可以检查服务器上的日志记录,否则任何错误都会转换为状态1。
- Microsoft提供的信息框很少有用,因此以下是一些解释您收到此错误的原因。
无效的用户ID:SQL Server无法在您尝试获取的服务器上找到指定的UserID。最常见的原因是这个userID没有被授予在服务器上的访问权限,但这也可能只是一个简单的打字错误或者您不小心尝试连接到其他服务器(如果您使用超过一个服务器,则这很典型)。
密码错误:密码错误或者只是一个笔误。请记住,这个用户名在不同的服务器上可能有不同的密码。
不太常见的错误:用户ID在服务器上可能已被禁用。提供了Windows登录以进行SQL身份验证(改为Windows身份验证。如果您使用SSMS,您可能需要以不同的用户身份运行才能使用此选项)。密码可能已过期,还可能有其他原因……
18456状态1解释:通常Microsoft SQL Server会给您错误状态1,实际上除了您有18456错误之外并没有什么意义。状态1用于隐藏实际状态,以保护系统,这对我来说是有道理的。下面是所有不同状态的列表,有关检索准确状态的更多信息,请访问在SQL Server 2005中了解“登录失败”(错误18456)错误消息。
未启用SQL身份验证:如果您首次在SQL Server实例上使用SQL登录,则由于服务器属性(安全部分)中仅设置了Windows身份验证,很常见发生错误18456。
要访问服务器属性,
- 打开SQL Server Management Studio,转到对象资源管理器窗格(如果无法看到,则使用视图)。
- 使用连接按钮连接到您的服务器数据库引擎。一旦连接,您将在对象资源管理器中看到它。
- 右键单击服务器,然后单击属性。将出现服务器属性窗口。
请参见下面的屏幕截图,可能会导致SQL登录失败
您应该将服务器身份验证设置为SQL Server Windows身份验证
要解决此错误,请按照以下步骤在安装了SQL Server 2005的计算机上进行操作。
- 在操作系统中创建一个新用户,用户名和密码与 SQL Server 2008 相同,并授予管理员权限。
- 在 SQL Server 数据库中,通过展开 DatabaseNode >> Security >> Login >> - Create New User 创建一个新用户,并选择 Windows Authentication 单选按钮以添加此新用户。- 只能使用所选的 Windows Authentication 添加该用户,这是操作系统的用户登录。
- 完成上述两个步骤后,使用 Windows Authentication 从 SQL Server 2008 连接到 SQL Server 2005 将成功连接。
如何修复?请查看此链接视频 SQL Server 和 Windows Authentication Mode 页面。
来源