SSMS 18.4 覆盖具有相同用户名但服务器不同的密码



当您要使用"对象资源管理器"工具登录不同的服务器时,SQL Server Management Studio 18 会使用相同的用户名覆盖密码。

例如,使用"记住密码"选项登录服务器,如下所示 Server: ASERVER Login: auser Password: apassword

然后登录到另一台服务器(再次"记住密码"(,如下所示(相同的用户名不同密码( Server: ANOTHERSERVER Login: auser Password: anotherpassword

遗憾的是,SSMS 会覆盖第一个用户名/密码。也就是说,如果尝试再次重新连接ASERVERSSMS 会给出用户名/密码错误。这太烦人了。有什么帮助吗?

编辑:问题实际上非常简单。打开连接SERVER1,然后使用对象资源管理器进行SERVER2。如果用户名相同,则SERVER1密码将消失。

编辑2:SSMS的密码管理切换到Windows凭据管理器,版本18:https://learn.microsoft.com/en-us/sql/ssms/release-notes-ssms?view=sql-server-ver15#download-ssms-180

除非从 SSMS 服务器历史记录中删除该服务器,否则它仍不会在 Windows 凭据中保存完全限定的设置。它将使用用户名/密码而不是服务器名称/用户名/密码保存条目。

TL;博士

  1. 打开已注册的服务器(Ctrl+Alt+G(并删除本地服务器组中的所有服务器(不确定是否关键,但我确实这样做了(。

  2. 打开"文件"菜单,选择"连接到服务器"。在对话框中, 下拉"服务器名称",然后使用箭头键突出显示 受影响的服务器名称并点击 删除 键将其从 SSMS 历史记录。这一步至关重要。

  3. 现在,该条目已从 SSMS 历史记录中取出,请使用同一对话框连接到服务器,确保单击">[X] 记住密码"。

瞧!如果查看 Windows 凭据,你将看到具有完全限定的 ServerName:UserName 的条目。

更多详情...

Windows 凭据在以下位置可见: 控制面板\所有控制面板项\凭据管理器

如果连接保存在"已注册的服务器"下的"本地服务器组"中,则它们不会自动正确迁移到 Windows 凭据。

它将为该连接的用户名创建 Windows 凭据记录,但没有服务器名称范围。 这似乎是真正的问题。

这是我的常用登录的 Windows 凭据。请注意两个冒号之间缺少的服务器名称:

Microsoft:SSMS:18::MySampleUserName

它应该是:

Microsoft:SSMS:18:MyServerName.Domain.com:MySampleUserName

如果 2 台或更多服务器具有相同的用户名,则每次登录时都会覆盖此一个 Windows 凭据记录密码。

我尝试从Windows凭据中删除此条目,但这不足以为我解决问题。

当问题发生时,不是 100% 清楚。根据我的测试,如果您在对象资源管理器中有 2 个不同的连接到同一服务器,并且您从对象资源管理器创建新的查询窗口,则连接将正确应用。 也许您正在谈论"新查询"命令中的最近连接? 如果您必须处理多个连接,则至少可以使用内置的"已注册服务器"功能。

或者,您可以使用 SSMSBoost 加载项(我开发的(进行无缝的"首选连接"和"最近连接"管理。

以下是有关该功能的视频:https://www.youtube.com/watch?v=5Up6EQux9LM

描述: https://www.ssmsboost.com/Features/ssms-add-in-preferred-connections

最新更新