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

标签 sql-server ssms

当您想要使用“对象资源管理器”工具登录不同的服务器时,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

  1. 打开注册服务器 (Ctrl+Alt+G) 并删除本地服务器组中的所有服务器(不确定)如果很重要,但我做到了)。

  2. 打开文件菜单,选择连接到服务器。在对话框中, 下拉服务器名称并使用箭头键突出显示 受影响的服务器名称并按删除键将其从 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 凭据中删除此条目,但这不足以解决我的问题。

关于sql-server - SSMS 18.4 覆盖具有相同用户名但不同服务器的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59824347/

相关文章:

sql - 如何将 FOR XML Path 的输出存储在变量中?

sql - 表的每一行都有sql语句。我如何按顺序运行每个?

mysql - Visual Basic 需要从 MySQL 更改为 MSSQL

SQL Server 索引包含的列

sql-server - 卸载 SQL Server 2016

sql - 强制执行sql脚本,并将结果转换为SSMS中的文本

SQL _ 通配符未按预期工作。为什么?

sql-server - SQL Server生成的bug数据脚本如何不在insert语句中设置IDENTITY?

sql-server - 纯动态调用SQL存储过程的方法(sp_executesql中的动态参数)?

sql-server-2008 - SQL Server Management Studio Intellisense 的问题