Usuwanie zapamiętanej listy login i hasło w SQL Server Management Studio

235

Niedawno korzystałem z zapasowego laptopa naszej firmy (z ogólną konfiguracją użytkownika) podczas naprawy mojego. Sprawdziłem opcję „Zapamiętaj hasło” w SQL Server Management Studio podczas logowania do bazy danych.

Muszę wyczyścić dane logowania i hasła, których użyłem, aby uniemożliwić następnej osobie, która będzie korzystać z laptopa, używanie moich nazw logowania i haseł. W jaki sposób mogę to zrobić?

Emad Armoun
źródło

Odpowiedzi:

334

Inna odpowiedź tutaj również wspomina od 2012 r. Możesz usunąć Usunąć buforowane dane logowania poprzez Jak usunąć buforowane nazwy serwerów z okna dialogowego Połącz z serwerem? . Właśnie potwierdziłem, że to usunięcie z listy MRU działa dobrze w 2016 i 2017 roku.

SQL Server Management Studio 2017 usuń plik C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\14.0\SqlStudio.bin

SQL Server Management Studio 2016 usuń plik C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\13.0\SqlStudio.bin

SQL Server Management Studio 2014 usuń plik C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\12.0\SqlStudio.bin

SQL Server Management Studio 2012 usuń plik C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin

SQL Server Management Studio 2008 usuń plik C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin

SQL Server Management Studio 2005 usuwa plik - to samo co powyższa odpowiedź, ale ścieżka do Vista. C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat

Są to ścieżki profilu dla Vista / 7/8.

EDYTOWAĆ:

Uwaga, AppDatato ukryty folder. Musisz pokazać ukryte foldery w Eksploratorze.

EDYCJA: Możesz po prostu nacisnąć klawisz Delete w menu rozwijanym Nazwa serwera / użytkownika (potwierdzone, że działa dla SSMS 18.0). Oryginalne źródło z https://blog.sqlauthority.com/2013/04/17/sql-server-remove-cached-login-from-ssms-connect-dialog-sql-in-sixty-seconds-049/, który wspomniał, że ta funkcja jest dostępna od 2012 roku!

Robin Luiten
źródło
39
„% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell \ SqlStudio.bin”
abatishchev
8
+1 dzięki! Usuwanie C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bindziałało dla mnie w Win7.
IsmailS
6
Być może może to być kolejne pytanie, ale obawiam się, że „prawdopodobnie się zamknie, ponieważ może być bardzo specyficzne dla produktu. Ale czy jest jakiś powód, aby edytować informacje przechowywane w powyższych plikach? Chciałbym usunąć niektóre zapisane loginy.
Vikas,
5
% AppData% \ Microsoft \ SQL Server Management Studio \ 11.0 \ SqlStudio.bin dla SSMS 2012 działało dla mnie.
J Bryan Price
3
Pracował dla mnie z SQL 2008 R2. Po prostu upewnij się, że masz zamknięte SQL Studio, zanim to zrobisz, bo prawie natychmiast odtworzy plik.
Kyle Heon
36

Dla osób poszukujących rozwiązania SSMS 2012 ... zobacz tę odpowiedź:

Usuń buforowane dane logowania 2012

Zasadniczo w 2012 r. Możesz usunąć serwer z listy rozwijanej serwerów, która usuwa wszystkie buforowane dane logowania dla tego serwera.

Działa również w wersji 17 (kompilacja 14.x).

Edyn
źródło
2
2014 użytkownicy powinni z tego skorzystać! Korzystam z SSMS 2014, nie miałem SqlStudio.bin (patrz najwyższa odpowiedź), ale podążyłem za linkiem w tej odpowiedzi i zadziałało (i jest o wiele łatwiejsze).
yzorg,
3
Zauważ, że pomimo tytułu linku w tej odpowiedzi „Usuń login z pamięci podręcznej 2012”, odpowiedź, do której prowadzi, dotyczy sposobu usunięcia nazwy serwera z pamięci podręcznej , a nie logowania. Nie przeczytałem dokładnie tej powiązanej odpowiedzi i próbowałem techniki usunięcia pojedynczego loginu z listy rozwijanej Login. To nie działa. Działa tylko wtedy, gdy usuwasz nazwę serwera z listy rozwijanej Nazwa serwera. Wraz z usunięciem nazwy serwera usunie również wszystkie buforowane dane logowania dla tej nazwy serwera; nie możesz usunąć tylko jednego loginu i pozostawić pozostałe dla tego serwera.
Simon Tewsi
30

W moim scenariuszu chciałem tylko usunąć określoną nazwę użytkownika / hasło z listy, która zawierała wiele innych zapisanych połączeń, o których nie chciałam zapomnieć. Okazuje się, że SqlStudio.binplik, o którym dyskutują inni, to binarna serializacja Microsoft.SqlServer.Management.UserSettings.SqlStudioklasy .NET , którą można przekształcić z postaci szeregowej , zmodyfikować i ponownie zserializować w celu zmodyfikowania określonych ustawień.

Aby wykonać usunięcie określonego loginu, utworzyłem nową aplikację konsolową C # .Net 4.6.1 i dodałem odniesienie do przestrzeni nazw, która znajduje się w następującej dll: C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\Microsoft.SqlServer.Management.UserSettings.dll(ścieżka może się nieznacznie różnić w zależności od wersji SSMS)

Stamtąd mogę łatwo tworzyć i modyfikować ustawienia według potrzeb:

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
źródło
2
Dziękuję bardzo, działało jak urok Jak wymyśliłeś 1) Ten plik jest binarną serializacją .NET klasy Microsoft.SqlServer.Management.UserSettings.SqlStudio i 2) Odwołanie do przestrzeni nazw znajduje się w bibliotece dll Microsoft.SqlServer.Management.UserSettings.dll i jak znalazłeś jego lokalizację
Dr Manhattan,
2
@DrManhattan Jeśli binarnie serializujesz bardzo prostą klasę .NET do pliku i otworzysz ją w edytorze tekstów, zobaczysz mieszankę danych binarnych i tekstu. Część tekstu będzie wartościami twoich łańcuchów (jeśli masz jakieś w klasie, która została zserializowana). Początkiem pliku będą jednak metadane dotyczące typu głównego, który został zserializowany i zestawu, z którego pochodzi. Otwórz SqlStudio.binplik, a zobaczysz zarówno ..UserSettingsi ..UserSettings.SqlStudio. Stamtąd łatwo było znaleźć ..UserSettings.dllw tym samym katalogu ssms.exe, który zawierał przestrzeń nazw i klasę.
Neil,
To wspaniale, dzięki. Widziałem metadane Microsoft.SqlServer.Management.UserSettings, Version=14.0.0.0, Culture=neutral..., nauczyłeś mnie łowić ryby, dzięki
dr Manhattan,
1
Uruchomiłem ten kod z uruchomionym SSMS, a następnie sprawdziłem, czy działa, uruchamiając ponownie SSMS, i nie zadziałało, ponieważ plik SqlStudio.bin został już załadowany do pamięci przez SSMS, a następnie ponownie napisany przez niego przed zamknięciem. Potem uruchomiłem kod z zamkniętym SSMS i działałem jak urok.
Muhammad Mamoor Khan
1
Fantastyczne rozwiązanie. Działa świetnie. Dokładnie wynik, który chciałem osiągnąć bez konieczności usuwania całego pliku bin
Kev Riley,
17

Działa to dla SQL Server Management Studio v18.0

Wygląda na to, że plik „SqlStudio.bin” już nie istnieje. Zamiast tego wszystkie moje ustawienia są przechowywane w tym pliku:

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

  • Otwórz go w dowolnym edytorze tekstów, takim jak Notepad ++
  • ctrl + f, aby usunąć nazwę użytkownika
  • następnie usuń cały <Element>.......</Element>otaczający go blok.
skrępowania
źródło
dziękuję @gluecks! tak wiele innych postów sugeruje, że plik sqlstudio.bin nadal działa dla wersji 18, ale to nie było moje doświadczenie. Teraz gdybym mógł tylko dowiedzieć się, co usuwa plik usersettings.xml co miesiąc lub dwa. Jestem zmęczony ponownym wpisywaniem mojej listy serwerów!
PTansey
7

Jest to naprawdę prosty sposób, aby to zrobić za pomocą nowszej wersji SQL Server Management Studio (używam 18.4)

  1. Otwórz okno dialogowe „Połącz z serwerem”
  2. Kliknij menu „Nazwa serwera”, aby je otworzyć
  3. Naciśnij strzałkę w dół na klawiaturze, aby podświetlić nazwę serwera
  4. Naciśnij klawisz Delete na klawiaturze

Logowanie zniknęło! Bez bałaganu z plikami dll lub bin.

Kevin Brydon
źródło
6

Jak wskazano gluecks, nie ma już SqlStudio.binw Microsoft SQL Server Management Studio 18 . Znalazłem to również UserSettings.xmlw C:\Users\userName\AppData\Roaming\Microsoft\SQL Server Management Studio\18.0. Ale usunięcie <Element>zawierającego poświadczenie wydaje się nie działać, wraca ono z powrotem do pliku xml, jeśli go zamknę i ponownie otworzę.

Okazuje się, że najpierw musisz zamknąć SQL Server Management Studio , a następnie edytować UserSettings.xmlplik w swoim ulubionym edytorze, np. Visual Studio Code. Myślę, że jest przechowywany gdzieś w SSMS poza tym plikiem XML ?! I to nie jest włączone Control Panel\All Control Panel Items\Credential Manager\Windows Credentials.

Weihui Guo
źródło
4

Dla SQL Server Management Studio 2008

  1. Musisz przejść C: \ Documents and Settings \% nazwa użytkownika% \ Application Data \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell

  2. Usuń SqlStudio.bin

Chicharito
źródło
3

Usunąć:

C: \ Documents and Settings \% Twoja nazwa użytkownika% \ Application Data \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ Shell \ mru.dat "

BobbyShaftoe
źródło
1
Zainstalowałem MSSSMS2008E pod Windows 7, a nawet nie mam mru.data ani w% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell nie w% LocalAppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell. Ale odpowiedź Robina Luitena pomaga zarówno w systemie Windows XP, jak i Windows 7. O ile wiem, często dochodzi do naszych kontrowersji: tinyurl.com/ybc8x8p
abatishchev
2

W XP plik .mru.dat znajduje się w C: \ Documents and Settings \ Name \ Application Data \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ ShellSEM

Jednak usunięcie go nic nie da.

Aby usunąć listę w XP, wytnij plik bin sqlstudio z C: \ Documents and Settings \ Name \ Application Data \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell i wklej go na pulpicie.

Wypróbuj SQL

Jeśli zadziałało, usuń plik bin sqlstudio z pulpitu.

Łatwo :)

Dave
źródło