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

224 sql-server security ssms login

我最近使用了我公司的备用笔记本电脑(一般用户设置),而我的维修工作正在进行中.登录数据库时,我检查了SQL Server Management Studio中的"记住密码"选项.

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

Rob*_*ten 318

此处的另一个答案还提到自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是一个隐藏文件夹.您需要在资源管理器中显示隐藏的文件夹.

  • "%AppData%\ Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin" (39认同)
  • +1谢谢!删除`C:\ Users \%username%\ AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin`在Win7中为我工作. (8认同)
  • 可能这可能是另一个问题,但我担心它可能会关闭,因为它可能是非常具体的产品.但有没有为什么要编辑存储在上述文件中的信息?我想删除一些已保存的登录信息. (5认同)
  • **%AppData%\ Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin**for SSMS 2012为我工作. (5认同)
  • 使用SQL 2008 R2为我工作.确保在执行此操作之前关闭SQL Studio,或者几乎立即重新创建文件. (3认同)
  • 确保在删除之前关闭SQL Server Management Studio,否则将使用凭据重新创建文件EDIT:如同@KyleHeon所说 (2认同)

Edy*_*dyn 35

对于那些寻找SSMS 2012解决方案的人来说......看到这个答案:

删除缓存登录2012

实际上,在2012年,您可以从服务器列表下拉列表中删除服务器,该下拉列表清除该服务器的所有缓存登录.

  • 请注意,尽管此答案中的链接标题为"删除缓存登录2012",但它链接到的答案是关于如何删除缓存的_server name_,而不是登录.我没有仔细阅读该链接的答案,并尝试从登录下拉列表中删除单个登录.这不起作用.它仅在从"服务器名称"下拉列表中删除服务器名称时才有效.除了删除服务器名称外,它还将删除该服务器名称的所有缓存登录名; 您不能只删除一次登录,而是保留该服务器的其他登录. (3认同)
  • 2014年用户应该使用这个!我正在使用SSMS 2014,我没有SqlStudio.bin(参见最佳答案),但我按照这个答案中的链接进行操作(并且更容易). (2认同)

Nei*_*eil 27

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

为了完成特定登录的删除,我创建了一个新的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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢,您像一个迷人的人物。您是如何找到的:1)该文件是Microsoft.SqlServer.Management.UserSettings.SqlStudio类的.NET二进制序列化; 2)对名称空间的引用位于dll中Microsoft.SqlServer.Management.UserSettings.dll以及如何找到其位置 (2认同)
  • @DrManhattan如果将一个非常简单的.NET类进行二进制序列化以归档并在文本编辑器中打开它,您将看到二进制数据和文本的混合。某些文本将是您字符串的值(如果您在序列化的类中有任何值)。但是,文件的开头将是有关已序列化的根类型及其来源的程序集的元数据。打开您的SqlStudio.bin文件,您将同时看到..UserSettings和..UserSettings.SqlStudio。从那里很容易在与`ssms.exe`相同的目录中找到`..UserSettings.dll`,其中包含名称空间和类。 (2认同)
  • 我在 SSMS 运行的情况下运行了这段代码,然后通过重新启动 SSMS 来检查它是否有效,但它不起作用,因为 SqlStudio.bin 已经被 SSMS 加载到内存中,然后在关闭之前被它重写。然后我在 SSMS 关闭的情况下运行了代码,并且工作得非常顺利。 (2认同)

Kev*_*don 17

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

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

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


Wei*_*Guo 7

作为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


Chi*_*ito 5

对于 SQL Server Management Studio 2008

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

  2. 删除SqlStudio.bin


小智 5

这适用于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>周围的整个块。

  • 已确认此过程在最新版本 v18.9.1 中有效。 (4认同)
  • 您需要在编辑 UserSettings.xml 之前关闭 MS SQL Management Studio,因为它会在关闭时恢复已删除的登录名。 (3认同)

Mar*_*cio 5

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

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

在此处输入图片说明


Bob*_*toe 4

删除:

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\Tools\Shell 中也没有 mru.data。但 Robin Luiten 的回答在 Windows XP 和 Windows 7 下都有帮助。据我所知,我们的争议经常发生:http://tinyurl.com/ybc8x8p (2认同)