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


235

我最近在维修矿井时使用了我们公司的备用笔记本电脑(已设置了一般用户)。登录数据库时,我已经在SQL Server Management Studio中选中了“记住密码”选项。

我需要清除用于防止下一个将使用笔记本电脑的人使用我的登录名和密码的登录名和密码信息。我怎样才能做到这一点?

Answers:


334

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

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是一个隐藏的文件夹。您需要在资源管理器中显示隐藏的文件夹。

编辑:您只需在服务器/用户名下拉列表中按Delete键即可(确认适用于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”
abatishchev

8
+1谢谢!C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin在Win7中,删除对我有用。
IsmailS

6
也许这可能是另一个问题,但是由于它是针对特定产品的,因此恐怕它可能会关闭。但是,为什么要编辑存储在上述文件中的信息呢?我想删除一些保存的登录名。
维卡斯(Vikas)2012年

5
适用于SSMS 2012的%AppData%\ Microsoft \ SQL Server Management Studio \ 11.0 \ SqlStudio.bin为我工作。
J Bryan Price

3
为我使用SQL 2008 R2。只需在执行此操作之前确保已关闭SQL Studio,否则它几乎立即会重新创建文件。
Kyle Heon

36

对于那些正在寻找SSMS 2012解决方案的人...请参见以下答案:

删除缓存的登录名2012

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

在v17(内部版本14.x)中也可以使用。


2
2014年的用户应该使用这个!我使用的是SSMS 2014,没有SqlStudio.bin(请参见顶部答案),但是我按照此答案中的链接进行了操作(很容易)。
yzorg

3
请注意,尽管此答案中的链接标题为“删除缓存的登录名2012”,但它链接到的答案是关于如何删除缓存的服务器名而不是登录名的信息。我没有足够仔细地阅读该链接的答案,并且正在尝试该技术从“登录”下拉列表中删除一个登录。那不行 仅当您从“服务器名称”下拉列表中删除服务器名称时,它才有效。除了删除服务器名称之外,它还将删除该服务器名称的所有缓存的登录名;您不能只删除一个登录名,而将其他登录名留给该服务器。
西蒙·图西

30

在我的场景中,我只想从列表中删除特定的用户名/密码,该用户名/密码具有许多其他我不想忘记的已保存连接。原来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);
        }
    }
}

2
非常感谢您,就像一个迷人的人物。您是如何知道的:1)该文件是Microsoft.SqlServer.Management.UserSettings.SqlStudio类的.NET二进制序列化; 2)对名称空间的引用位于dll中Microsoft.SqlServer.Management.UserSettings.dll以及如何找到其位置
曼哈顿博士

2
@DrManhattan如果将一个非常简单的.NET类进行二进制序列化以归档并在文本编辑器中打开它,您将看到二进制数据和文本的混合。某些文本将是您的字符串的值(如果在序列化的类中有字符串的话)。但是,文件的开头将是有关已序列化的根类型及其来源的程序集的元数据。打开SqlStudio.bin文件,您将同时看到..UserSettings..UserSettings.SqlStudio。从那里可以轻松找到..UserSettings.dll与相同的目录ssms.exe,其中包含名称空间和类。
尼尔

太好了,谢谢。我看到了元数据Microsoft.SqlServer.Management.UserSettings, Version=14.0.0.0, Culture=neutral...,您已经教我如何钓鱼,谢谢
曼哈顿博士

1
我在运行SSMS的情况下运行了此代码,然后在那里检查了一下是否可以通过重新启动SSMS来工作,但它不起作用,因为SqlStudio.bin已由SSMS加载到内存中,然后在关闭之前由它重新编写。然后,我在关闭SSMS的情况下运行代码,并且像一个超级按钮一样工作。
穆罕默德·马穆尔·汗

1
很棒的解决方案。完美运作。正是我想要实现的结果而不必删除整个bin文件
Kev Riley

17

这适用于SQL Server Management Studio v18.0

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

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

  • 在记事本等任何Texteditor中打开它
  • ctrl + f用于删除用户名
  • 然后删除<Element>.......</Element>它周围的整个块。

谢谢@gluecks!许多其他帖子建议sqlstudio.bin文件仍适用于v18,但这不是我的经验。现在,如果我只能弄清每个月或两个月清除了usersettings.xml文件的内容。我非常讨厌不得不重新输入服务器列表!
太平洋时间

7

使用更新版本的SQL Server Management Studio(我使用的是18.4)是一种非常简单的方法

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

登录不见了!不要弄乱dll或bin文件。


6

作为gluecks指出,没有更多的SqlStudio.bin微软SQL Server Management Studio中18。我也发现了这个UserSettings.xmlC:\Users\userName\AppData\Roaming\Microsoft\SQL Server Management Studio\18.0。但是删除<Element>包含凭证似乎不起作用,如果我关闭然后再次重新打开它,它将再次出现在xml文件中。

原来,您需要先关闭SQL Server Management Studio,然后UserSettings.xml在您喜欢的编辑器中编辑文件,例如Visual Studio Code。我想除了这个xml文件,它还缓存在SSMS中的某个地方吗?而且它没有打开Control Panel\All Control Panel Items\Credential Manager\Windows Credentials


4

对于SQL Server Management Studio 2008

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

  2. 删除SqlStudio.bin


3

删除:

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


1
我已经在Windows 7下安装了MSSSMS2008E,甚至在%AppData%\ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell中都没有mru.data,在%LocalAppData%\ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell中也没有。但是Robin Luiten的答案在Windows XP和Windows 7上都可以提供帮助。据我所知,我们的争议经常发生:tinyurl.com/ybc8x8p
abatishchev,2010年

2

在XP中,.mru.dat文件位于C:\ Documents and Settings \ Name \ Application Data \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ ShellSEM

但是,删除它不会做任何事情。

要删除XP中的列表,请从C:\ Documents and Settings \ Name \ Application Data \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell中剪切sqlstudio bin文件,并将其粘贴到桌面上。

试试SQL

如果可行,则从桌面删除sqlstudio bin文件。

简单 :)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.