Entfernen der gespeicherten Anmelde- und Kennwortliste in SQL Server Management Studio

235

Ich habe kürzlich den Ersatz-Laptop unseres Unternehmens (für den ein allgemeiner Benutzer eingerichtet ist) verwendet, während meiner repariert wurde. Ich habe die Option "Kennwort speichern" in SQL Server Management Studio aktiviert, als ich mich bei der Datenbank angemeldet habe.

Ich muss die Anmelde- und Kennwortinformationen löschen, die ich verwendet habe, um zu verhindern, dass die nächste Person, die den Laptop verwendet, meine Anmeldenamen und Kennwörter verwendet. Wie kann ich das machen?

Emad Armoun
quelle

Antworten:

334

In einer anderen Antwort wird auch erwähnt, dass Sie seit 2012 entfernen können. Zwischengespeicherte Anmeldung entfernen über Wie entferne ich zwischengespeicherte Servernamen aus dem Dialogfeld Mit Server verbinden? . Gerade bestätigt, dass dieses Löschen in der MRU-Liste in den Jahren 2016 und 2017 einwandfrei funktioniert.

SQL Server Management Studio 2017 löscht die Datei C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\14.0\SqlStudio.bin

SQL Server Management Studio 2016 löscht die Datei C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\13.0\SqlStudio.bin

SQL Server Management Studio 2014 löscht die Datei C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\12.0\SqlStudio.bin

SQL Server Management Studio 2012 löscht die Datei C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin

SQL Server Management Studio 2008 löscht die Datei C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin

SQL Server Management Studio 2005 löscht die Datei - wie oben angegeben, jedoch mit dem Vista-Pfad. C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat

Dies sind Profilpfade für Vista / 7/8.

BEARBEITEN:

Beachten Sie, AppDataist ein versteckter Ordner. Sie müssen versteckte Ordner im Explorer anzeigen.

BEARBEITEN: Sie können einfach in der Dropdown-Liste Server- / Benutzername auf Löschen klicken (bestätigt, dass es für SSMS v18.0 funktioniert). Originalquelle von https://blog.sqlauthority.com/2013/04/17/sql-server-remove-cached-login-from-ssms-connect-dialog-sql-in-sixty-seconds-049/, in der dies erwähnt wurde Diese Funktion ist seit 2012 verfügbar!

Robin Luiten
quelle
39
"% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell \ SqlStudio.bin"
abatishchev
8
+1 Danke! Das Entfernen C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.binhat bei mir in Win7 funktioniert.
IsmailS
6
Vielleicht kann dies eine andere Frage sein, aber ich befürchte, dass sie wahrscheinlich geschlossen wird, da sie sehr produktspezifisch sein könnte. Aber gibt es einen Grund, die in den obigen Dateien gespeicherten Informationen zu bearbeiten? Ich möchte einige gespeicherte Logins entfernen.
Vikas
5
% AppData% \ Microsoft \ SQL Server Management Studio \ 11.0 \ SqlStudio.bin für SSMS 2012 hat bei mir funktioniert.
J Bryan Price
3
Arbeitete für mich mit SQL 2008 R2. Stellen Sie nur sicher, dass Sie SQL Studio geschlossen haben, bevor Sie dies tun, oder es erstellt die Datei fast sofort neu.
Kyle Heon
36

Für diejenigen, die nach der SSMS 2012-Lösung suchen ... siehe diese Antwort:

Entfernen Sie das zwischengespeicherte Login 2012

Im Wesentlichen können Sie 2012 den Server aus der Dropdown-Liste "Serverliste" löschen, wodurch alle zwischengespeicherten Anmeldungen für diesen Server gelöscht werden.

Funktioniert auch in Version 17 (Build 14.x).

Edyn
quelle
2
2014 Benutzer sollten dies nutzen! Ich verwende SSMS 2014, ich hatte SqlStudio.bin nicht (siehe obere Antwort), aber ich bin dem Link in dieser Antwort gefolgt und es hat funktioniert (und ist viel einfacher).
Yzorg
3
Beachten Sie, dass trotz des Titels des Links in dieser Antwort "Cached Login 2012 entfernen" in der Antwort, auf die verwiesen wird, das Löschen eines zwischengespeicherten Servernamens und nicht eines Logins beschrieben wird. Ich habe diese verknüpfte Antwort nicht sorgfältig genug gelesen und habe versucht, ein einzelnes Login aus der Dropdown-Liste Login zu entfernen. Das geht nicht Dies funktioniert nur, wenn Sie einen Servernamen aus der Dropdown-Liste Servername entfernen. Neben dem Löschen des Servernamens werden auch alle zwischengespeicherten Anmeldungen für diesen Servernamen gelöscht. Sie können nicht nur ein einziges Login löschen und die anderen für diesen Server belassen.
Simon Tewsi
30

In meinem Szenario wollte ich nur einen bestimmten Benutzernamen / ein bestimmtes Passwort aus der Liste entfernen, die viele andere gespeicherte Verbindungen hatte, die ich nicht vergessen wollte. Es stellt sich heraus, dass die SqlStudio.binDatei, über die andere hier sprechen, eine binäre .NET-Serialisierung der Microsoft.SqlServer.Management.UserSettings.SqlStudioKlasse ist, die deserialisiert, geändert und reserialisiert werden kann, um bestimmte Einstellungen zu ändern.

Um das Entfernen des spezifischen Logins zu erreichen, habe ich eine neue C # .Net 4.6.1-Konsolenanwendung erstellt und einen Verweis auf den Namespace hinzugefügt, der sich in der folgenden DLL befindet: C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\Microsoft.SqlServer.Management.UserSettings.dll(Ihr Pfad kann je nach SSMS-Version geringfügig abweichen.)

Von dort aus konnte ich die Einstellungen einfach nach Bedarf erstellen und ändern:

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);
        }
    }
}
Neil
quelle
2
Vielen Dank, hat wie ein Zauber funktioniert. Wie haben Sie herausgefunden? 1) Diese Datei ist eine binäre .NET-Serialisierung der Microsoft.SqlServer.Management.UserSettings.SqlStudio-Klasse und 2) Der Verweis auf den Namespace befindet sich in der DLL Microsoft.SqlServer.Management.UserSettings.dll und wie Sie seinen Standort gefunden haben
Dr. Manhattan
2
@DrManhattan Wenn Sie eine sehr einfache .NET-Klasse binär serialisieren, um sie abzulegen und in einem Texteditor zu öffnen, sehen Sie eine Mischung aus Binärdaten und Text. Ein Teil des Textes sind die Werte Ihrer Zeichenfolgen (falls Sie welche in der Klasse haben, die serialisiert wurde). Der Anfang der Datei besteht jedoch aus Metadaten über den Stammtyp, der serialisiert wurde, und die Assembly, von der er stammt. Öffnen Sie Ihre SqlStudio.binDatei und Sie werden beide ..UserSettingsund sehen ..UserSettings.SqlStudio. Von dort war es leicht, ..UserSettings.dllim selben Verzeichnis zu finden ssms.exe, das den Namespace und die Klasse enthielt.
Neil
Das ist großartig, danke. Ich habe die Metadaten gesehen Microsoft.SqlServer.Management.UserSettings, Version=14.0.0.0, Culture=neutral..., Sie haben mir das Fischen beigebracht, danke
Dr. Manhattan,
1
Ich habe diesen Code bei laufendem SSMS ausgeführt und dort überprüft, ob er durch einen Neustart von SSMS funktioniert hat, und er hat nicht funktioniert, da die Datei SqlStudio.bin bereits von SSMS in den Speicher geladen und vor dem Schließen von ihr neu geschrieben wurde. Dann habe ich den Code mit geschlossenem SSMS ausgeführt und wie ein Zauber gearbeitet.
Muhammad Mamoor Khan
1
Fantastische Lösung. Funktioniert perfekt. Genau das Ergebnis wollte ich erzielen, ohne die gesamte Bin-Datei löschen zu müssen
Kev Riley
17

Dies funktioniert für SQL Server Management Studio v18.0

Die Datei "SqlStudio.bin" scheint nicht mehr zu existieren. Stattdessen werden meine Einstellungen alle in dieser Datei gespeichert:

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

  • Öffnen Sie es in einem beliebigen Texteditor wie Notepad ++
  • Strg + F für den zu entfernenden Benutzernamen
  • Löschen Sie dann den gesamten <Element>.......</Element>Block, der ihn umgibt.
Kleber
quelle
danke @gluecks! So viele andere Beiträge deuten darauf hin, dass die Datei sqlstudio.bin immer noch für Version 18 funktioniert, aber das war nicht meine Erfahrung. Wenn ich nur herausfinden könnte, was die Datei usersettings.xml alle ein oder zwei Monate löscht. Ich bin es so leid, meine Serverliste erneut eingeben zu müssen!
PTansey
7

Es gibt eine wirklich einfache Möglichkeit, dies mit einer neueren Version von SQL Server Management Studio zu tun (ich verwende 18.4).

  1. Öffnen Sie das Dialogfeld "Mit Server verbinden"
  2. Klicken Sie auf die Dropdown-Liste "Servername", damit sie geöffnet wird
  3. Drücken Sie den Abwärtspfeil auf Ihrer Tastatur, um einen Servernamen hervorzuheben
  4. Drücken Sie auf Ihrer Tastatur auf Löschen

Login weg! Kein Herumspielen mit DLLs oder Bin-Dateien.

Kevin Brydon
quelle
6

Wie Gluecks hervorhob, nicht mehr SqlStudio.binin Microsoft SQL Server Management Studio 18 . Ich fand auch diese UserSettings.xmlin C:\Users\userName\AppData\Roaming\Microsoft\SQL Server Management Studio\18.0. Das Entfernen der <Element>Anmeldeinformationen scheint jedoch nicht zu funktionieren. Sie werden direkt in der XML-Datei wieder angezeigt, wenn ich sie schließe und erneut öffne.

Es stellt sich heraus, dass Sie zuerst SQL Server Management Studio schließen und dann die UserSettings.xmlDatei in Ihrem bevorzugten Editor bearbeiten müssen , z. B. Visual Studio Code. Ich denke, es ist irgendwo in SSMS zwischen dieser XML-Datei zwischengespeichert?! Und es ist nicht an Control Panel\All Control Panel Items\Credential Manager\Windows Credentials.

Weihui Guo
quelle
4

Für SQL Server Management Studio 2008

  1. Sie müssen zu C: \ Dokumente und Einstellungen \% Benutzername% \ Anwendungsdaten \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell wechseln

  2. Löschen Sie SqlStudio.bin

Chicharito
quelle
3

Löschen:

C: \ Dokumente und Einstellungen \% Ihr Benutzername% \ Anwendungsdaten \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ Shell \ mru.dat "

BobbyShaftoe
quelle
1
Ich habe MSSSMS2008E unter Windows 7 installiert und auch nicht mru.data in% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell, nicht in% LocalAppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell. Aber Robin Luitens Antwort hilft sowohl unter Windows XP als auch unter Windows 7. Soweit ich sehe, findet unsere Kontroverse häufig statt: tinyurl.com/ybc8x8p
abatishchev
2

In XP befindet sich die Datei .mru.dat unter C: \ Dokumente und Einstellungen \ Name \ Anwendungsdaten \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ ShellSEM

Das Entfernen bringt jedoch nichts.

Um die Liste in XP zu entfernen, schneiden Sie die sqlstudio bin-Datei aus C: \ Dokumente und Einstellungen \ Name \ Anwendungsdaten \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell aus und fügen Sie sie auf Ihrem Desktop ein.

Versuchen Sie es mit SQL

Wenn es funktioniert hat, löschen Sie die sqlstudio bin-Datei vom Desktop.

Einfach :)

Dave
quelle