当您想要使用“对象资源管理器”工具登录不同的服务器时,SQL Server Management Studio 18 会覆盖具有相同用户名的密码。
例如,使用“记住密码”选项登录服务器,如下所示
服务器:ASERVER
登录: auser
密码: 密码
然后登录到另一台服务器(再次“记住密码”),如下所示(相同的用户名不同的密码)
服务器:另一个服务器
登录: auser
密码:另一个密码
不幸的是,SSMS 会覆盖第一个用户名/密码。也就是说,如果您尝试再次重新连接 ASERVER
,SSMS 会给出用户名/密码错误。这太烦人了。有什么帮助吗?
编辑:问题实际上很简单。使用对象资源管理器打开连接 SERVER1,然后打开连接 SERVER2。如果用户名相同,则 SERVER1 密码消失。
编辑 2: SSMS 的密码管理已切换到版本 18 的 Windows Credential Manager:https://learn.microsoft.com/en-us/sql/ssms/release-notes-ssms?view=sql-server-ver15#download-ssms-180
最佳答案
除非您从 SSMS 服务器历史记录中删除该服务器,否则它仍然不会在 Windows 凭据中保存完全限定的设置。它将使用用户名/密码而不是服务器名/用户名/密码保存条目。
TL;DR
打开注册服务器 (Ctrl+Alt+G) 并删除本地服务器组中的所有服务器(不确定)如果很重要,但我做到了)。
打开文件菜单,选择连接到服务器。在对话框中, 下拉服务器名称并使用箭头键突出显示 受影响的服务器名称并按删除键将其从 SSMS 历史。 这一步至关重要。
既然该条目已从 SSMS 历史记录中删除,请使用同一对话框连接到服务器,并确保点击[X]记住密码。
瞧!如果您查看 Windows 凭据,您将看到带有完全限定的 ServerName:UserName 的条目。
更多详细信息...
Windows 凭据可见于: 控制面板\所有控制面板项\凭据管理器
如果您在“注册服务器”下的“本地服务器组”中保存了连接,它们将不会自动正确迁移到 Windows 凭据。
它将为该连接的用户名创建一个 Windows 凭据记录,但不包含服务器名称范围。这似乎是真正的问题。
这是我常用登录的 Windows 凭据。请注意两个冒号之间缺少的 ServerName:
Microsoft:SSMS:18::MySampleUserName
应该是:
Microsoft:SSMS:18:MyServerName.Domain.com:MySampleUserName
如果您在 2 个或更多服务器上使用相同的用户名,则每次登录时都会覆盖这一 Windows 凭据记录密码。
我尝试从 Windows 凭据中删除此条目,但这不足以解决我的问题。
关于sql-server - SSMS 18.4 覆盖具有相同用户名但不同服务器的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59824347/