Rimozione dell'elenco di login e password ricordati in SQL Server Management Studio


235

Di recente ho usato il laptop di riserva della nostra azienda (che ha un utente generico impostato) mentre il mio veniva riparato. Ho verificato l'opzione "Memorizza password" in SQL Server Management Studio durante l'accesso al database.

Devo cancellare le informazioni di accesso e password che ho usato per impedire alla persona successiva che utilizzerà il laptop di utilizzare i miei nomi e password di accesso. Come posso fare questo?

Risposte:


334

Un'altra risposta qui menziona anche dal 2012 è possibile rimuovere Rimuovi accesso memorizzato nella cache tramite Come rimuovere i nomi dei server memorizzati nella finestra di dialogo Connetti al server? . Ho appena confermato che questa eliminazione nell'elenco MRU funziona bene nel 2016 e 2017.

SQL Server Management Studio 2017 elimina il file C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\14.0\SqlStudio.bin

SQL Server Management Studio 2016 elimina il file C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\13.0\SqlStudio.bin

SQL Server Management Studio 2014 elimina il file C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\12.0\SqlStudio.bin

SQL Server Management Studio 2012 elimina il file C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin

SQL Server Management Studio 2008 elimina il file C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin

SQL Server Management Studio 2005 elimina il file, come nella risposta precedente ma nel percorso Vista. C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat

Questi sono i percorsi dei profili per Vista / 7/8.

MODIFICARE:

Nota, AppDataè una cartella nascosta. Devi mostrare le cartelle nascoste in Explorer.

EDIT: puoi semplicemente premere Elimina dal menu a discesa Server / Nome utente (confermato per funzionare con SSMS v18.0). Fonte originale da https://blog.sqlauthority.com/2013/04/17/sql-server-remove-cached-login-from-ssms-connect-dialog-sql-in-sixty-seconds-049/ che menzionava che questa funzione è disponibile dal 2012!


39
"% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell \ SqlStudio.bin"
abatishchev,

8
+1 Grazie! La rimozione ha C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.binfunzionato per me in Win7.
IsmailS,

6
Può essere che questa possa essere un'altra domanda, ma temo che probabilmente si chiuderà perché potrebbe essere molto specifico per il prodotto. Ma c'è qualche motivo per modificare le informazioni archiviate nei file sopra? Vorrei rimuovere alcuni accessi salvati.
Vikas,

5
% AppData% \ Microsoft \ SQL Server Management Studio \ 11.0 \ SqlStudio.bin per SSMS 2012 ha funzionato per me.
J Bryan Price,

3
Ha funzionato per me con SQL 2008 R2. Assicurati solo di aver chiuso SQL Studio prima di farlo o ricrea il file quasi immediatamente.
Kyle Heon,

36

Per coloro che cercano la soluzione SSMS 2012 ... vedi questa risposta:

Rimuovi l'accesso alla cache 2012

In sostanza, nel 2012 è possibile eliminare il server dall'elenco a discesa dell'elenco dei server che cancella tutti gli accessi memorizzati nella cache per quel server.

Funziona anche in v17 (build 14.x).


2
Gli utenti del 2014 dovrebbero usarlo! Sto usando SSMS 2014, non avevo SqlStudio.bin (vedi la risposta in alto), ma ho seguito il link in questa risposta e ha funzionato (ed è molto più semplice).
yzorg,

3
Si noti che nonostante il titolo del collegamento in questa risposta, "Rimuovi accesso memorizzato nella cache 2012", la risposta a cui si collega riguarda la modalità di eliminazione del nome di un server memorizzato nella cache , non un accesso. Non ho letto abbastanza attentamente quella risposta collegata e stavo provando la tecnica per rimuovere un singolo accesso dall'elenco a discesa Accesso. Non funziona Funziona solo quando rimuovi un nome server dall'elenco a discesa Nome server. Oltre all'eliminazione del nome del server, eliminerà anche tutti gli accessi memorizzati nella cache per tale nome del server; non puoi cancellare un solo login e lasciare gli altri per quel server.
Simon Tewsi,

30

Nel mio scenario volevo solo rimuovere un nome utente / password specifici dall'elenco che aveva molte altre connessioni salvate che non volevo dimenticare. Si scopre che il SqlStudio.binfile di cui altri stanno discutendo qui è una serializzazione binaria .NET della Microsoft.SqlServer.Management.UserSettings.SqlStudioclasse, che può essere deserializzata, modificata e ricerializzata per modificare impostazioni specifiche.

Per ottenere la rimozione dell'account di accesso specifico, ho creato una nuova applicazione console C # .Net 4.6.1 e ho aggiunto un riferimento allo spazio dei nomi che si trova nella seguente dll: C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\Microsoft.SqlServer.Management.UserSettings.dll(il percorso può variare leggermente a seconda della versione di SSMS)

Da lì ho potuto facilmente creare e modificare le impostazioni come desiderato:

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
Grazie mille, ha funzionato come un fascino Come hai capito 1) Che quel file è una serializzazione binaria .NET della classe Microsoft.SqlServer.Management.UserSettings.SqlStudio e 2) Il riferimento allo spazio dei nomi si trova nella dll Microsoft.SqlServer.Management.UserSettings.dll e come hai trovato la sua posizione
Dr Manhattan,

2
@DrManhattan Se binari serializzi una classe .NET molto semplice da archiviare e la apri in un editor di testo, vedrai un mix di dati binari e testo. Parte del testo sarà il valore delle tue stringhe (se ne hai una nella classe serializzata). Tuttavia, l'inizio del file saranno metadati sul tipo di root serializzato e sull'assembly da cui proviene. Apri il tuo SqlStudio.binfile e vedrai entrambi ..UserSettingse ..UserSettings.SqlStudio. Da lì è stato facile trovare ..UserSettings.dllnella stessa directory di ssms.exe, che conteneva lo spazio dei nomi e la classe.
Neil,

È fantastico, grazie. Ho visto i metadati Microsoft.SqlServer.Management.UserSettings, Version=14.0.0.0, Culture=neutral..., mi hai insegnato a pescare, grazie
Dr Manhattan,

1
Ho eseguito questo codice con SSMS in esecuzione e quindi ho controllato lì per vedere se funzionava riavviando SSMS e non ha funzionato, perché SqlStudio.bin era già stato caricato in memoria da SSMS e quindi riscritto da esso prima di chiuderlo. Quindi ho eseguito il codice con SSMS chiuso e ha funzionato come un incantesimo.
Muhammad Mamoor Khan,

1
Soluzione fantastica. Funziona perfettamente. Esattamente il risultato che volevo ottenere senza dover cancellare l'intero file bin
Kev Riley il

17

Funziona con SQL Server Management Studio v18.0

Il file "SqlStudio.bin" non sembra più esistere. Invece le mie impostazioni sono tutte memorizzate in questo file:

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

  • Aprilo in qualsiasi Texteditor come Notepad ++
  • ctrl + f per il nome utente da rimuovere
  • quindi eliminare l'intero <Element>.......</Element>blocco che lo circonda.

grazie @gluecks! così tanti altri post suggeriscono che il file sqlstudio.bin funziona ancora per v18 ma non è stata la mia esperienza. Ora, se solo potessi capire cosa sta cancellando il file usersettings.xml ogni mese o due. Sono così stanco di dover reinserire il mio elenco di server!
PTansey,

7

C'è un modo davvero semplice per farlo utilizzando una versione più recente di SQL Server Management Studio (sto usando 18.4)

  1. Apri la finestra di dialogo "Connetti al server"
  2. Fai clic sul menu a discesa "Nome server" in modo che si apra
  3. Premi la freccia giù sulla tastiera per evidenziare il nome di un server
  4. Premi il tasto Canc sulla tastiera

Accesso andato! Nessun pasticcio con dll o file bin.


6

Come sottolineato da gluecks, non più SqlStudio.binin Microsoft SQL Server Management Studio 18 . Ho anche trovato questo UserSettings.xmlin C:\Users\userName\AppData\Roaming\Microsoft\SQL Server Management Studio\18.0. Ma rimuovendo il<Element> contenimento della credenziale sembra non funzionare, ritorna sul file XML, se lo chiudo e lo riapro di nuovo.

Si scopre che è necessario chiudere prima SQL Server Management Studio , quindi modificare il UserSettings.xmlfile nel proprio editor preferito, ad esempio Visual Studio Code. Immagino che sia memorizzato nella cache da qualche parte in SSMS oltre a questo file XML ?! E non è acceso Control Panel\All Control Panel Items\Credential Manager\Windows Credentials.


4

Per SQL Server Management Studio 2008

  1. Devi andare C: \ Documents and Settings \% username% \ Application Data \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell

  2. Elimina SqlStudio.bin


3

Elimina:

C: \ Documents and Settings \% Nome utente% \ Dati applicazioni \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ Shell \ mru.dat "


1
Ho installato MSSSMS2008E in Windows 7 e non ho nemmeno mru.data né in% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell non in% LocalAppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell. Ma la risposta di Robin Luiten aiuta sotto Windows XP e Windows 7. Per quanto vedo la nostra controversia si svolge spesso: tinyurl.com/ybc8x8p
abatishchev

2

In XP, il file .mru.dat è in C: \ Documents and Settings \ Nome \ Dati applicazioni \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ ShellSEM

Tuttavia, rimuoverlo non farà nulla.

Per rimuovere l'elenco in XP, tagliare il file bin sqlstudio da C: \ Documents and Settings \ Nome \ Dati applicazioni \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell e incollarlo sul desktop.

Prova SQL

Se ha funzionato, quindi eliminare il file bin sqlstudio dal desktop.

Facile :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.