sql-server - 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
解决方案
除非您从 SSMS 服务器历史记录中删除该服务器,否则它仍然不会在 Windows 凭据中保存完全限定的设置。它将使用用户名/密码而不是服务器名/用户名/密码保存一个条目。
TL;博士
打开注册服务器(Ctrl++ Alt)G并删除本地服务器组中的所有服务器(不确定是否重要,但我确实这样做了)。
打开文件菜单,连接到服务器选择。在对话框中,下拉服务器名称并使用箭头键突出显示受影响的服务器名称,然后按 Delete 键将其从 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 凭据中删除此条目,但这不足以解决我的问题。
推荐阅读
- angular - !property 返回 true,即使它已赋值
- coq - 在 coq 中插入 BST 的定理
- python - appengine:ReferencePropertyResolveError:ReferenceProperty 无法解析:[u'User', xxxxxxxxxxxxx]
- c - 二维数组,打印索引。?
- unity3d - Unity - 让相机像 mmo
- c# - 对重写方法的多态调用失败。而是调用基类的虚方法
- swiftui - SwiftUI:点击列表条目后,无法重新点击
- javascript - 将应用程序从 Ubuntu 移动到 Windows 7 后如何运行?
- python - Python Pandas - 如何对出现在列中的数组元素求和
- java - 在 Java 中将 DataFrame 写入 Cassandra 表