SSMS 中键入的密码出现“密码无效”错误和响应速度缓慢
本文介绍使用SQL Server身份验证SQL Server Management Studio (SSMS) 的密码输入时出现的问题。
原始产品版本:SQL Server
原始 KB 编号: 4038457
症状
假设使用 SSMS 17.2 (或较旧版本的程序) 使用 SQL Server 身份验证连接到任何版本的 SQL Server。 键入密码时,密码框对键盘按键的视觉响应明显变慢。 此外,登录尝试失败,并显示“密码无效”错误消息,即使输入的密码正确。
原因
出现此问题的原因是 Windows 数据保护 API 无法将 MasterKey 备份到域的域控制器,该域控制器包含用于启动 SSMS 的 Windows 帐户。
解决方法
若要解决此问题,请执行以下操作:
- 使用 Windows 身份验证 而不是 SQL 身份验证。
- 使用本地帐户而不是域帐户登录到 Windows。
- 当 RWDC 不可用时,请按照 DPAPI MasterKey 备份失败中的“解决方法”部分中的步骤进行操作。
解决方案
若要解决此问题,请确定并解决阻止备份 Windows 数据保护 API MasterKey 的问题。
更多信息
以下步骤描述了此方案中发生的情况:
在 SSMS 的密码框中键入字符时,将调用 CryptProtectData Windows 数据保护 API (DPAPI) 函数来加密密码。
DPAPI 最初生成名为 MasterKey 的强密钥 (因为没有有效的 MasterKey 用于) ,该密钥受用户的登录凭据保护,并且会调用备份过程。
如果此过程 (失败,因为用户域) 没有可访问的可写域控制器 (DC) ,则会生成错误并引发 SSMS 应用程序。
在 SSMS 代码中,此错误被捕获且未处理。 由于代码不处理这种情况,因此不会向用户显示此错误。
这会导致发送到SQL Server的密码为空字符串。 遇到此问题时,有两种症状:
由于尝试访问可写域控制器失败,在密码框中键入操作明显缓慢。
即使输入了正确的密码,SQL Server在其错误日志中报告无效的密码。
从本质上讲,在 RWDC 不可用时,你遇到了 DPAPI MasterKey 备份失败一文中所述的问题。 Microsoft 已更改 17.3 和未来版本的 SSMS 代码。 因此,如果遇到此问题,系统将报告从 DPAPI 引发的异常,以便更轻松地进行诊断。
References
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈