首页 > 解决方案 > SSMS 18.4 覆盖具有相同用户名但不同服务器的密码

问题描述

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

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

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

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

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

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

标签: sql-serverssms

解决方案


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

TL;博士

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

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

  3. 现在该条目不在 SSMS 历史记录中,使用相同的对话框连接到服务器,确保单击[X] 记住密码

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

更多详情...

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

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

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

这是我常用登录的 Windows 凭据。注意两个冒号之间缺少的 ServerName:

Microsoft:SSMS:18::MySampleUserName

应该是:

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

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

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


推荐阅读