Suppression de la liste de connexion et de mot de passe mémorisée dans SQL Server Management Studio

235

J'ai récemment utilisé l'ordinateur portable de rechange de notre société (qui a une configuration utilisateur générale) pendant que le mien était en réparation. J'ai vérifié l'option «Mémoriser le mot de passe» dans SQL Server Management Studio lors de la connexion à la base de données.

Je dois effacer les informations de connexion et de mot de passe que j'ai utilisées pour empêcher la prochaine personne qui utilisera l'ordinateur portable d'utiliser mes noms de connexion et mots de passe. Comment puis-je faire ceci?

Emad Armoun
la source

Réponses:

334

Une autre réponse mentionne également depuis 2012 que vous pouvez supprimer Supprimer la connexion mise en cache via Comment supprimer les noms de serveur mis en cache de la boîte de dialogue Se connecter au serveur? . Je viens de confirmer que cette suppression dans la liste MRU fonctionne correctement en 2016 et 2017.

SQL Server Management Studio 2017 supprime le fichier C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\14.0\SqlStudio.bin

SQL Server Management Studio 2016 supprime le fichier C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\13.0\SqlStudio.bin

SQL Server Management Studio 2014 supprime le fichier C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\12.0\SqlStudio.bin

SQL Server Management Studio 2012 supprime le fichier C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin

SQL Server Management Studio 2008 supprime le fichier C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin

SQL Server Management Studio 2005 supprime le fichier - identique à la réponse ci-dessus mais le chemin Vista. C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat

Ce sont des chemins de profil pour Vista / 7/8.

ÉDITER:

Remarque, AppDataest un dossier caché. Vous devez afficher les dossiers cachés dans l'explorateur.

EDIT: Vous pouvez simplement appuyer sur supprimer dans la liste déroulante Server / User name (confirmé pour fonctionner pour SSMS v18.0). Source originale de https://blog.sqlauthority.com/2013/04/17/sql-server-remove-cached-login-from-ssms-connect-dialog-sql-in-sixty-seconds-049/ qui a mentionné que cette fonctionnalité est disponible depuis 2012!

Robin Luiten
la source
39
"% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell \ SqlStudio.bin"
abatishchev
8
+1 Merci! La suppression a C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.binfonctionné pour moi dans Win7.
IsmailS
6
Peut-être que cela peut être une autre question, mais je crains que cela ne se ferme car il pourrait être très spécifique au produit. Mais y a-t-il une raison pour modifier les informations stockées dans les fichiers ci-dessus? Je souhaite supprimer certaines connexions enregistrées.
Vikas
5
% AppData% \ Microsoft \ SQL Server Management Studio \ 11.0 \ SqlStudio.bin pour SSMS 2012 a fonctionné pour moi.
J Bryan Price
3
A travaillé pour moi avec SQL 2008 R2. Assurez-vous simplement que SQL Studio est fermé avant de procéder, sinon il recrée le fichier presque immédiatement.
Kyle Heon
36

Pour ceux qui recherchent la solution SSMS 2012 ... voir cette réponse:

Supprimer la connexion mise en cache 2012

Essentiellement, en 2012, vous pouvez supprimer le serveur de la liste déroulante de la liste des serveurs qui efface toutes les connexions mises en cache pour ce serveur.

Fonctionne également dans la version 17 (build 14.x).

Edyn
la source
2
Les utilisateurs de 2014 devraient l'utiliser! J'utilise SSMS 2014, je n'avais pas SqlStudio.bin (voir la réponse du haut), mais j'ai suivi le lien dans cette réponse et cela a fonctionné (et c'est beaucoup plus facile).
yzorg
3
Notez que malgré le titre du lien dans cette réponse, "Supprimer la connexion mise en cache 2012", la réponse à laquelle il renvoie concerne la suppression d'un nom de serveur mis en cache , pas une connexion. Je n'ai pas lu cette réponse liée avec suffisamment d'attention et essayais la technique pour supprimer une seule connexion de la liste déroulante Connexion. Ça ne marche pas. Cela ne fonctionne que lorsque vous supprimez un nom de serveur de la liste déroulante Nom du serveur. En plus de supprimer le nom du serveur, il supprimera également toutes les connexions mises en cache pour ce nom de serveur; vous ne pouvez pas supprimer une seule connexion et laisser les autres pour ce serveur.
Simon Tewsi
30

Dans mon scénario, je voulais seulement supprimer un nom d'utilisateur / mot de passe spécifique de la liste qui avait de nombreuses autres connexions enregistrées que je ne voulais pas oublier. Il s'avère que le SqlStudio.binfichier dont d'autres discutent ici est une sérialisation binaire .NET de la Microsoft.SqlServer.Management.UserSettings.SqlStudioclasse, qui peut être désérialisée, modifiée et resérialisée pour modifier des paramètres spécifiques.

Pour effectuer la suppression de la connexion spécifique, j'ai créé une nouvelle application console C # .Net 4.6.1 et ajouté une référence à l'espace de noms qui se trouve dans la DLL suivante: C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\Microsoft.SqlServer.Management.UserSettings.dll(votre chemin peut différer légèrement selon la version de SSMS)

De là, je pouvais facilement créer et modifier les paramètres comme souhaité:

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
la source
2
Merci beaucoup, travaillé comme un charme Comment avez-vous compris 1) que ce fichier est une sérialisation binaire .NET de la classe Microsoft.SqlServer.Management.UserSettings.SqlStudio et 2) la référence à l'espace de noms se trouve dans la DLL Microsoft.SqlServer.Management.UserSettings.dll et comment vous avez trouvé son emplacement
Dr Manhattan
2
@DrManhattan Si vous binaire sérialisez une classe .NET très simple à classer et ouvrez-la dans un éditeur de texte, vous verrez un mélange de données binaires et de texte. Une partie du texte sera la valeur de vos chaînes (si vous en avez dans la classe qui a été sérialisée). Cependant, le début du fichier sera constitué de métadonnées sur le type racine qui a été sérialisé et l'assembly dont il provient. Ouvrez votre SqlStudio.binfichier et vous verrez les deux ..UserSettingset ..UserSettings.SqlStudio. De là, il était facile de trouver ..UserSettings.dlldans le même répertoire que celui ssms.exequi contenait l'espace de noms et la classe.
Neil
C'est génial, merci. J'ai vu les métadonnées Microsoft.SqlServer.Management.UserSettings, Version=14.0.0.0, Culture=neutral..., vous m'avez appris à pêcher, merci
Dr Manhattan
1
J'ai exécuté ce code avec le SSMS en cours d'exécution, puis je l'ai vérifié pour voir s'il fonctionnait en redémarrant SSMS, et cela n'a pas fonctionné, car le SqlStudio.bin était déjà chargé en mémoire par SSMS, puis réécrit par lui avant de se fermer. Ensuite, j'ai exécuté le code avec SSMS fermé et travaillé comme un charme.
Muhammad Mamoor Khan
1
Une solution fantastique. Fonctionne parfaitement. Exactement le résultat que je voulais atteindre sans avoir à supprimer le fichier bin entier
Kev Riley
17

Cela fonctionne pour SQL Server Management Studio v18.0

Le fichier "SqlStudio.bin" ne semble plus exister. Au lieu de cela, mes paramètres sont tous stockés dans ce fichier:

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

  • Ouvrez-le dans n'importe quel éditeur de texte comme Notepad ++
  • ctrl + f pour le nom d'utilisateur à supprimer
  • puis supprimez tout le <Element>.......</Element>bloc qui l'entoure.
gluecks
la source
merci @gluecks! tant d'autres publications suggèrent que le fichier sqlstudio.bin fonctionne toujours pour la v18, mais ce n'était pas mon expérience. Maintenant, si je pouvais seulement comprendre ce qui efface le fichier usersettings.xml tous les mois ou deux. Je suis tellement fatigué de devoir entrer à nouveau ma liste de serveurs!
PTansey
7

Il existe un moyen très simple de le faire en utilisant une version plus récente de SQL Server Management Studio (j'utilise 18.4)

  1. Ouvrez la boîte de dialogue "Se connecter au serveur"
  2. Cliquez sur la liste déroulante "Nom du serveur" pour l'ouvrir
  3. Appuyez sur la flèche vers le bas de votre clavier pour mettre en surbrillance un nom de serveur
  4. Appuyez sur supprimer sur votre clavier

Connectez-vous disparu! Pas de problème avec les fichiers DLL ou bin.

Kevin Brydon
la source
6

Comme l'ont souligné Gluecks, plus SqlStudio.bindans Microsoft SQL Server Management Studio 18 . J'ai aussi trouvé ça UserSettings.xmldans C:\Users\userName\AppData\Roaming\Microsoft\SQL Server Management Studio\18.0. Mais supprimer le <Element>contenant les informations d'identification ne semble pas fonctionner, il revient directement sur le fichier xml, si je le ferme et le rouvre à nouveau.

Il s'avère que vous devez d'abord fermer SQL Server Management Studio , puis modifier le UserSettings.xmlfichier dans votre éditeur préféré, par exemple Visual Studio Code. Je suppose qu'il est mis en cache quelque part dans SSMS en plus de ce fichier xml?! Et ce n'est pas allumé Control Panel\All Control Panel Items\Credential Manager\Windows Credentials.

Weihui Guo
la source
4

Pour SQL Server Management Studio 2008

  1. Vous devez aller C: \ Documents and Settings \% username% \ Application Data \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell

  2. Supprimer SqlStudio.bin

Chicharito
la source
3

Supprimer:

C: \ Documents and Settings \% Your Username% \ Application Data \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ Shell \ mru.dat "

BobbyShaftoe
la source
1
J'ai installé MSSSMS2008E sous Windows 7 et je n'ai même pas mru.data ni dans% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell pas dans% LocalAppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell. Mais la réponse de Robin Luiten aide à la fois sous Windows XP et Windows 7. Pour autant que je vois, notre controverse a souvent lieu: tinyurl.com/ybc8x8p
abatishchev
2

Sous XP, le fichier .mru.dat se trouve dans C: \ Documents and Settings \ Name \ Application Data \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ ShellSEM

Cependant, sa suppression ne fera rien.

Pour supprimer la liste dans XP, coupez le fichier sqlstudio bin de C: \ Documents and Settings \ Name \ Application Data \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell et collez-le sur votre bureau.

Essayez SQL

Si cela a fonctionné, supprimez le fichier sqlstudio bin du bureau.

Facile :)

Dave
la source