在SQL Server Management Studio中删除记住的登录名和密码列表

289

最近我的电脑正在维修,我使用了公司备用笔记本电脑(通用用户设置)。登录数据库时,我勾选了SQL Server管理工具中的“记住密码”选项。

为了防止下一个使用笔记本电脑的人使用我的登录名和密码,我需要清除已使用的登录名和密码信息。我该如何做?

12个回答

368
另一个答案提到,自2012年以来,您可以通过如何从“连接到服务器”对话框中删除缓存的服务器名称?来删除缓存的登录。我刚确认在2016和2017中,删除MRU列表可行。

SQL Server Management Studio 2017 删除文件 C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\14.0\SqlStudio.bin

SQL Server Management Studio 2016 删除文件 C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\13.0\SqlStudio.bin

SQL Server Management Studio 2014 删除文件 C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\12.0\SqlStudio.bin

SQL Server Management Studio 2012 删除文件 C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin

SQL Server Management Studio 2008 删除文件 C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin

SQL Server Management Studio 2005 删除文件-与上面的答案相同,但是Vista路径。 C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat

这些是Vista / 7/8的配置文件路径。

编辑:

注意,AppData是一个隐藏文件夹。您需要在资源管理器中显示隐藏的文件夹。

编辑:您可以直接从服务器/用户名下拉列表中删除(已确认在SSMS v18.0上可用)。原始来源:https://blog.sqlauthority.com/2013/04/17/sql-server-remove-cached-login-from-ssms-connect-dialog-sql-in-sixty-seconds-049/提到此功能自2012年以来就已经可用!


39
"%AppData%\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin" 翻译成中文为:"%AppData%\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin"。 - abatishchev
8
+1 谢谢!在Win7系统中,删除C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin这个文件对我有用。 - IsmailS
6
也许这可以是另一个问题,但我担心它可能会被关闭,因为它可能非常依赖于特定的产品。但是是否有办法编辑存储在上述文件中的信息?我想删除一些保存的登录信息。 - Vikas
5
对于 SSMS 2012,**%AppData%\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin** 对我有效。 - J Bryan Price
3
在 SQL 2008 R2 上为我起作用。只要确保在执行此操作之前关闭 SQL Studio,否则它会立即重新创建文件。 - Kyle Heon
显示剩余10条评论

126

这适用于SQL Server Management Studio v18.0

文件“SqlStudio.bin”似乎已经不存在了。相反,我的设置都存储在此文件中:

C:\Users\*********\AppData\Roaming\Microsoft\SQL Server Management Studio\18.0\UserSettings.xml

  • 在任何文本编辑器(如Notepad ++)中打开它
  • Ctrl + F查找要删除的用户名
  • 然后删除整个包围它的<Element>.......</Element>块。

编辑: 对于v18.0(预览7),甚至更简单且有效的解决方案是:

  • 进入“连接到服务器”对话框窗口:

    enter image description here

  • 单击屏幕截图中标记为绿色的向下箭头图标。

  • 使用键盘上的箭头键上下导航

  • 按键盘上的DEL键删除该条目。

  • 关闭对话框窗口,重新打开时该条目确实会被删除。


4
确认此程序最近在v18.9.1版本中仍然有效。 - kooch
2
在编辑UserSettings.xml之前,您需要关闭MS SQL Management Studio,因为它会在关闭时还原已删除的登录信息。 - Константин Золин
1
确认在v18.12.1版本中可以正常工作。 - Varun Sharma
在v18.12上,从“连接到服务器”对话框中删除项目对我无效。编辑xml文件解决了这个问题。 - Neville
我的优点是包括使用GUI的方法。也许这不是一种很容易发现的方法,但是当你可以使用GUI时,就不要通过手动更改XML来强制修改它。 - Rawheiser
SSMS v18.x的直接路径: C:\Users%USERNAME%\AppData\Roaming\Microsoft\SQL Server Management Studio\18.0\UserSettings.xml - undefined

45

对于那些寻找SSMS 2012解决方案的人...请参考这个答案:

移除缓存登录 2012

基本上,在2012中,您可以从服务器列表下拉菜单中删除服务器,以清除该服务器的所有缓存登录。

在v17(版本号为14.x)中也可以使用此方法。


3
2014用户应该使用这个!我正在使用SSMS 2014,我没有SqlStudio.bin文件(见顶部答案),但是我按照这个答案中的链接进行操作,它起作用了(而且更加容易)。 - yzorg
5
请注意,尽管这个回答中的链接标题是“删除缓存的登录2012”,但它链接到的回答是关于如何删除缓存的服务器名称,而不是登录名。我没有仔细阅读那个链接回答,并试图使用该技术从登录下拉列表中删除一个单独的登录名。这是行不通的。该方法只适用于从服务器名称下拉列表中删除服务器名称时使用。除了删除服务器名称外,它还会删除该服务器名称下的所有缓存的登录;您无法仅删除一个登录名并保留该服务器的其他登录名。 - Simon Elms
1
我正在使用SSMS v18.4,这个解决方案对我有效。打开“连接到服务器”> 打开“服务器名称”下拉列表并删除所有保存的登录信息。 - Masoud Sadeghi

33

在我的情况下,我只想从保存了许多其他连接的列表中删除特定的用户名/密码,我不想忘记这些连接。事实证明,这里讨论的SqlStudio.bin文件是Microsoft.SqlServer.Management.UserSettings.SqlStudio类的.NET二进制序列化,可以进行反序列化、修改和重新序列化以修改特定设置。

为了实现删除特定登录信息,我创建了一个新的C# .Net 4.6.1控制台应用程序,并添加了对位于以下dll中的命名空间的引用:C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\Microsoft.SqlServer.Management.UserSettings.dll(根据SSMS版本,您的路径可能略有不同)

从那里,我可以轻松地创建和修改所需的设置:

using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using Microsoft.SqlServer.Management.UserSettings;

class Program
{
    static void Main(string[] args)
    {
        var settingsFile = new FileInfo(@"C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\13.0\SqlStudio.bin");

        // Backup our original file just in case...
        File.Copy(settingsFile.FullName, settingsFile.FullName + ".backup");

        BinaryFormatter fmt = new BinaryFormatter();

        SqlStudio settings = null;

        using(var fs = settingsFile.Open(FileMode.Open))
        {
            settings = (SqlStudio)fmt.Deserialize(fs);
        }

        // The structure of server types / servers / connections requires us to loop
        // through multiple nested collections to find the connection to be removed.
        // We start here with the server types

        var serverTypes = settings.SSMS.ConnectionOptions.ServerTypes;

        foreach (var serverType in serverTypes)
        {
            foreach (var server in serverType.Value.Servers)
            {
                // Will store the connection for the provided server which should be removed
                ServerConnectionSettings removeConn = null;

                foreach (var conn in server.Connections)
                {
                    if (conn.UserName == "adminUserThatShouldBeRemoved")
                    {
                        removeConn = conn;
                        break;
                    }
                }

                if (removeConn != null)
                {
                    server.Connections.RemoveItem(removeConn);
                }
            }
        }

        using (var fs = settingsFile.Open(FileMode.Create))
        {
            fmt.Serialize(fs, settings);
        }
    }
}

3
非常感谢,非常有效。 您是如何发现:1)该文件是 Microsoft.SqlServer.Management.UserSettings.SqlStudio 类的 .NET 二进制序列化文件,并且2)与该命名空间有关的引用位于 Microsoft.SqlServer.Management.UserSettings.dll 中,您是如何找到它的位置。 - Dr Manhattan
3
如果你将一个简单的.NET类进行二进制序列化并打开它,你会看到一些二进制数据和文本混合在一起。其中一些文本是你的字符串值(如果你的类中有任何被序列化的字符串)。但是文件开头的一部分是关于根类型(被序列化的类型)和它所属程序集的元数据。打开SqlStudio.bin文件,你会看到..UserSettings..UserSettings.SqlStudio两个内容。从那里,很容易在与ssms.exe相同的目录下找到..UserSettings.dll,其中包含了命名空间和类。 - Neil
1
太棒了,谢谢。我看到了元数据 Microsoft.SqlServer.Management.UserSettings, Version=14.0.0.0, Culture=neutral...,你教会了我如何钓鱼,感谢。 - Dr Manhattan
2
我在运行SSMS的情况下运行了这段代码,然后检查它是否有效,方法是重新启动SSMS。但是,由于SqlStudio.bin已经被SSMS加载到内存中并在关闭之前被重写,所以它没有起作用。然后我关闭了SSMS并运行了代码,结果非常完美。 - Muhammad Mamoor Khan
1
我也在这里工作过,所以+1,但是在我的电脑上,我没有在SQL Server目录中找到所需的DLL。当我浏览时,我最终在VS2017目录下找到了它,我本来期望它在第一次出现的地方,但它没有出现在“添加引用”窗口的程序集列表中。哦,好吧。 - Mr Lister
1
非常好的解决方案。对我来说,我正在使用SQL Server 17。所以我改变了一些路径。
  • 对于Microsoft.SqlServer.Management.UserSettings.dll,我使用了这个路径“C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\”
  • 对于SqlStudio.bin,我使用了这个路径“C:\Users%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\14.0\”
- Abdu Imam

19

使用更新版本的SQL Server Management Studio(我使用的是18.4),有一种非常简单的方法可以实现此操作。

  1. 打开“连接到服务器”对话框
  2. 单击“服务器名称”下拉列表,以展开它
  3. 按下键盘上的向下箭头,以突出显示服务器名称
  4. 按下键盘上的删除键

登录已经消失!无需操作dll或bin文件。


12

从被版本18或更高版本使用的XML文件中删除“Connections”树内的整个“Element”节点。

C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\18.0\UserSettings.xml

输入图像描述


8
正如gluecks所指出的,在Microsoft SQL Server Management Studio 18中再也没有SqlStudio.bin。我还发现在C:\Users\userName\AppData\Roaming\Microsoft\SQL Server Management Studio\18.0中有一个名为UserSettings.xml的文件。但是删除包含凭据的<Element>似乎行不通,如果我关闭并重新打开它,它会马上回到xml文件中。
事实证明,你需要先关闭SQL Server Management Studio,然后在你喜欢的编辑器(如Visual Studio Code)中编辑UserSettings.xml文件。我猜这个文件除了在xml文件中之外还被缓存在SSMS的某个地方?而且它并不在控制面板\所有控制面板项\凭据管理器\Windows凭据中。

5

对于 SQL Server Management Studio 2008

  1. 您需要前往 C:\Documents and Settings\%username%\Application Data\Microsoft\Microsoft SQL Server\100\Tools\Shell

  2. 删除 SqlStudio.bin


4

删除:

C:\Documents and Settings\%您的用户名%\Application Data\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat"


注:该路径为IT技术相关内容,请谨慎操作。

2
我已在Windows 7下安装了MSSSMS2008E,但是在%AppData%\Microsoft\Microsoft SQL Server\100\Tools\Shell和%LocalAppData%\Microsoft\Microsoft SQL Server\100\Tools\Shell中都没有mru.data。但是Robin Luiten的答案在Windows XP和Windows 7下都有帮助。就我所看到的,我们的争议经常发生:http://tinyurl.com/ybc8x8p - abatishchev

3
在XP系统中,.mru.dat文件位于C:\Documents and Settings\Name\Application Data\Microsoft\Microsoft SQL Server\90\Tools\ShellSEM目录下。然而,删除该文件不会有任何作用。要清除列表,请将sqlstudio二进制文件从C:\Documents and Settings\Name\Application Data\Microsoft\Microsoft SQL Server\100\Tools\Shell目录剪切到桌面上,然后再试一下SQL。如果成功了,就可以从桌面删除sqlstudio二进制文件了。简单易行 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接