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

Posted

技术标签:

【中文标题】在 SQL Server Management Studio 中删除记住的登录名和密码列表【英文标题】:Removing the remembered login and password list in SQL Server Management Studio 【发布时间】:2010-09-25 20:48:35 【问题描述】:

我最近在维修我的公司时使用了我们公司的备用笔记本电脑(设置了普通用户)。我在登录数据库时检查了 SQL Server Management Studio 中的“记住密码”选项。

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

【问题讨论】:

【参考方案1】:

删除:

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

【讨论】:

我已经在 Windows 7 下安装了 MSSSMS2008E,甚至在 %AppData%\Microsoft\Microsoft SQL Server\100\Tools\Shell 中都没有 mru.data 不在 %LocalAppData%\Microsoft\Microsoft SQL Server 中\100\工具\外壳。但是 Robin Luiten 的回答在 Windows XP 和 Windows 7 下都有帮助。据我所知,我们的争议经常发生:tinyurl.com/ybc8x8p【参考方案2】:

这里的另一个答案还提到,自 2012 年以来,您可以通过 How to remove cached server names from the Connect to Server dialog? 删除删除缓存登录。刚刚确认 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 Studio2008删除文件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 年起可用!

【讨论】:

"%AppData%\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin" +1 谢谢!删除 C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin 在 Win7 中为我工作。 这可能是另一个问题,但我担心它可能会关闭,因为它可能非常特定于产品。但是有什么理由编辑存储在上述文件中的信息吗?我想删除一些已保存的登录信息。 SSMS 2012 的 %AppData%\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin 对我有用。 使用 SQL 2008 R2 为我工作。请确保在执行此操作之前已关闭 SQL Studio,否则它几乎会立即重新创建文件。【参考方案3】:

在 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 文件。

简单:)

【讨论】:

【参考方案4】:

对于那些寻找 SSMS 2012 解决方案的人......请参阅此答案:

Remove cached login 2012

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

也适用于 v17(内部版本 14.x)。

【讨论】:

2014 用户应该使用这个!我正在使用 SSMS 2014,我没有 SqlStudio.bin(请参阅最佳答案),但我按照此答案中的链接进行操作(并且更容易)。 请注意,尽管此答案中的链接标题为“删除缓存登录 2012”,但它链接的答案是关于如何删除缓存的 服务器名称,而不是登录。我没有足够仔细地阅读链接的答案,并且正在尝试从登录下拉列表中删除单个登录的技术。那是行不通的。它仅在您从“服务器名称”下拉列表中删除服务器名称时才有效。除了删除服务器名称外,它还将删除该服务器名称的所有缓存登录;您不能只删除一个登录名而将其他登录名留给该服务器。 我使用的是 SSMS v18.4,这个解决方案对我有用。打开连接到服务器 > 打开服务器名称下拉列表并删除所有已保存的登录信息。【参考方案5】:

对于 SQL Server Management Studio 2008

    你需要去C:\Documents and Settings\%username%\Application Data\Microsoft\Microsoft SQL Server\100\Tools\Shell

    删除 SqlStudio.bin

【讨论】:

【参考方案6】:

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

【讨论】:

非常感谢,工作就像一个魅力你是如何弄清楚 1) 该文件是 Microsoft.SqlServer.Management.UserSettings.SqlStudio 类的 .NET 二进制序列化和 2) 参考命名空间位于 dll Microsoft.SqlServer.Management.UserSettings.dll 中以及您如何找到它的位置 @DrManhattan 如果您将一个非常简单的 .NET 类二进制序列化为文件并在文本编辑器中打开它,您将看到二进制数据和文本的混合。一些文本将是您的字符串的值(如果您在已序列化的类中有任何内容)。然而,文件的开头将是关于被序列化的根类型和它来自的程序集的元数据。打开您的SqlStudio.bin 文件,您将看到..UserSettings..UserSettings.SqlStudio。从那里很容易在与ssms.exe 相同的目录中找到..UserSettings.dll,其中包含命名空间和类。 太棒了,谢谢。看到元数据Microsoft.SqlServer.Management.UserSettings, Version=14.0.0.0, Culture=neutral...,你教我钓鱼,谢谢 我在运行 SSMS 的情况下运行了这段代码,然后通过重新启动 SSMS 检查它是否工作,但它没有工作,因为 SqlStudio.bin 已经被 SSMS 加载到内存中,然后在关闭之前由它重新编写。然后我在关闭 SSMS 的情况下运行代码并像魅力一样工作。 也在这里工作过,所以 +1,但在我的计算机上,我的 SQL Server 目录中没有所需的 DLL。当我浏览时,我终于在 VS2017 目录下找到了它,我一开始就期待它,除了它不在“添加引用”窗口的“程序集”列表中。哦,好吧。【参考方案7】:

这适用于 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),一个更简单且有效的解决方案是:

转到“连接到服务器”对话窗口:

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

使用键盘上的箭头键向上/向下导航

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

关闭对话窗口,当你重新打开它时,条目确实会被删除。

希望对你有帮助:-)

【讨论】:

确认此程序在最近的 v18.9.1 中有效。 您需要在编辑 UserSettings.xml 之前关闭 MS SQL Management Studio,因为它会在关闭时恢复已删除的登录。【参考方案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,然后在您喜欢的编辑器中编辑 UserSettings.xml 文件,例如视觉工作室代码。我猜它除了这个xml文件之外还缓存在SSMS中的某个地方?!而且它不在Control Panel\All Control Panel Items\Credential Manager\Windows Credentials

【讨论】:

【参考方案9】:

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

    打开“连接到服务器”对话框 点击“服务器名称”下拉菜单,将其打开 按键盘上的向下箭头突出显示服务器名称 按键盘上的删除键

登录消失了!不要乱用 dll 或 bin 文件。

【讨论】:

【参考方案10】:

从 XML 文件中删除整个节点“元素”(在“连接”树中),由版本 18 或更高版本使用。

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

【讨论】:

以上是关于在 SQL Server Management Studio 中删除记住的登录名和密码列表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server Management Studio 中注册 SQL Server 服务器?

SQL Server Management Studio (SSMS,SQL Server管理工具) 一直在加载程序包解决方案

如何使用 Windows 和 SQL 身份验证使用 SQL Server Management Studio 连接到 SQL Server

使用 SQL Server Management Studio 连接到 SQL Server

如何使用 SQL Server Management Studio (2008) 在 SQL Server Compact Edition 中创建列

在 SQL Server Management Studio 中更改 SQL Server 数据库中的列属性