文章内容
2022/1/4 16:57:26,作 者: 黄兵
Microsoft SQL Server 错误 18456 疑难解答
最近在切换数据库,重新设置好 Microsoft SQL Server 之后,链接数据库,出现如下错误:
Microsoft SQL Server Error 18456 的解决方案
有时,错误显示为“UserName '<UserName>' 登录失败”,此信息将帮助我们识别需要排除故障的用户。从消息中,我们将知道错误编号作为搜索后续步骤的参考。在这种情况下,它是 Microsoft SQL Server,错误:18456。
其他时候,我们可能只会看到“Microsoft SQL Server 错误 18456”以及严重性和状态编号。就其本身而言,状态编号可能没有多大意义,但它可以提供有关错误以及下一步查找位置的更多详细信息。
这些错误状态 18456 是最常见的。描述和可能的解决方案提供了快速解释和潜在的故障排除指南。
检查服务器认证模式
一旦我们使用 Windows 身份验证登录到 SSMS,我们需要检查安全设置以确认 MSSQL 是否设置为允许 Windows 和 SQL 身份验证。
在 SSMS 中,右键单击对象资源管理器窗口顶部的服务器名称,然后选择属性。
接下来,单击安全 页面。

如果您发现Windows 身份验证是唯一配置的模式,这可能是导致错误 18456,用户“<用户名>”登录失败的原因。
将服务器身份验证模式设置为允许SQL Server 和 Windows 身份验证,您将能够使用 SQL 用户和密码或 Windows 用户和密码登录到 MS-SQL。进行此更改后,您将需要重新启动 SQL Server 服务。
一旦我们使用 Windows 身份验证登录到 SSMS,我们需要检查安全设置以确认 MSSQL 是否设置为允许 Windows 和 SQL 身份验证。
在 SSMS 中,右键单击对象资源管理器窗口顶部的服务器名称,然后选择属性。
接下来,单击安全 页面。
如果您发现Windows 身份验证是唯一配置的模式,这可能是导致错误 18456,用户“<用户名>”登录失败的原因。
将服务器身份验证模式设置为允许SQL Server 和 Windows 身份验证,您将能够使用 SQL 用户和密码或 Windows 用户和密码登录到 MS-SQL。进行此更改后,您将需要重新启动 SQL Server 服务。
重新启动 SQL 服务
在 SSMS 中,右键单击对象资源管理器窗口顶部的服务器名称,然后选择重新启动 以应用新的身份验证模式设置。
在上面的示例中,Windows 身份验证模式是唯一配置的模式,由于用户“sa”是 SQL 用户且不允许 SQL Server 身份验证,因此出现错误 18456。
在 SSMS 中,右键单击对象资源管理器窗口顶部的服务器名称,然后选择重新启动 以应用新的身份验证模式设置。
在上面的示例中,Windows 身份验证模式是唯一配置的模式,由于用户“sa”是 SQL 用户且不允许 SQL Server 身份验证,因此出现错误 18456。
检查 SQL 用户权限
在我们检查SQL用户权限时,我们需要回答以下问题:
- 是否允许用户登录?
- 用户是否设置了有效的密码?
- 用户是否具有访问所需数据库所需的权限?
在 SSMS对象资源管理器中,展开安全、登录。找到登录失败的用户。用户上的x表示该用户已禁用登录。

要允许用户登录,请右键单击该用户并选择Properties,然后单击Status 页面。为用户启用登录并单击确定。

刷新用户登录列表后,我们可以确认用户不再有红色 x 存在。这应该允许用户登录。在此示例中,SQL 用户“sa”未能登录,因为没有登录权限。
继续进行用户故障排除,右键单击用户并选择Properties,然后单击General 页面。您可以在此处输入新密码,然后输入确认密码。单击“确定” 保存新密码。我们为用户设置了一个新密码,以便我们在尝试登录时确定密码。

在我们检查SQL用户权限时,我们需要回答以下问题:
- 是否允许用户登录?
- 用户是否设置了有效的密码?
- 用户是否具有访问所需数据库所需的权限?
在 SSMS对象资源管理器中,展开安全、登录。找到登录失败的用户。用户上的x表示该用户已禁用登录。
要允许用户登录,请右键单击该用户并选择Properties,然后单击Status 页面。为用户启用登录并单击确定。
刷新用户登录列表后,我们可以确认用户不再有红色 x 存在。这应该允许用户登录。在此示例中,SQL 用户“sa”未能登录,因为没有登录权限。
继续进行用户故障排除,右键单击用户并选择Properties,然后单击General 页面。您可以在此处输入新密码,然后输入确认密码。单击“确定” 保存新密码。我们为用户设置了一个新密码,以便我们在尝试登录时确定密码。
将用户映射到数据库
我们对用户进行故障排除的最后一步是检查用户映射以验证用户有权访问所需的数据库并设置或验证他们在数据库中的角色。右键单击用户并选择Properties,然后单击User Mapping 页面。选择数据库从数据库列表中。从数据库角色成员资格中,选择所需/必需的成员资格。单击“确定”。

在此示例中,我们将用户“ ProdX709 ”映射到数据库Production X709.2019并授予他们数据库角色db_owner。在很多情况下,您只需要一个拥有db_datareader和db_datawriter角色的用户就可以读写数据库。
我们对用户进行故障排除的最后一步是检查用户映射以验证用户有权访问所需的数据库并设置或验证他们在数据库中的角色。右键单击用户并选择Properties,然后单击User Mapping 页面。选择数据库从数据库列表中。从数据库角色成员资格中,选择所需/必需的成员资格。单击“确定”。
在此示例中,我们将用户“ ProdX709 ”映射到数据库Production X709.2019并授予他们数据库角色db_owner。在很多情况下,您只需要一个拥有db_datareader和db_datawriter角色的用户就可以读写数据库。
结论
在这篇故障排除文章中,我们学习了如何识别错误 18456 的细节,以帮助我们追踪问题的根本原因。
参考资料:
1、Troubleshooting Microsoft SQL Server Error 18456
其它相关推荐:
1、使用 Python 连接Microsoft Sql Server
2、Python 实现 CSV 文件读取并保存到 Microsoft Sql Server 数据库
3、未指定 INSTANCESHAREDWOWDIR 命令行值
在这篇故障排除文章中,我们学习了如何识别错误 18456 的细节,以帮助我们追踪问题的根本原因。
参考资料:
1、Troubleshooting Microsoft SQL Server Error 18456
其它相关推荐:
1、使用 Python 连接Microsoft Sql Server
2、Python 实现 CSV 文件读取并保存到 Microsoft Sql Server 数据库
3、未指定 INSTANCESHAREDWOWDIR 命令行值
e on 回复 有用(0)
e