Eliminar la lista de inicio de sesión y contraseña recordada en SQL Server Management Studio

235

Recientemente utilicé la computadora portátil de repuesto de nuestra compañía (que tiene un usuario general configurado) mientras la mía estaba siendo reparada. Verifiqué la opción "Recordar contraseña" en SQL Server Management Studio al iniciar sesión en la base de datos.

Necesito borrar la información de inicio de sesión y contraseña que he usado para evitar que la próxima persona que usará la computadora portátil use mis nombres de usuario y contraseñas. ¿Cómo puedo hacer esto?

Emad Armoun
fuente

Respuestas:

334

Otra respuesta aquí también menciona que desde 2012 puede eliminar Eliminar el inicio de sesión en caché a través de ¿Cómo eliminar los nombres de servidor en caché del cuadro de diálogo Conectar al servidor? . Acabo de confirmar que esta eliminación en la lista MRU funciona bien en 2016 y 2017.

SQL Server Management Studio 2017 elimine el archivo C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\14.0\SqlStudio.bin

SQL Server Management Studio 2016 elimine el archivo C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\13.0\SqlStudio.bin

SQL Server Management Studio 2014 elimine el archivo C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\12.0\SqlStudio.bin

SQL Server Management Studio 2012 elimine el archivo C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin

SQL Server Management Studio 2008 elimine el archivo C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin

SQL Server Management Studio 2005 elimina el archivo, igual que la respuesta anterior pero la ruta de Vista. C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat

Estas son las rutas de perfil para Vista / 7/8.

EDITAR:

Nota, AppDataes una carpeta oculta. Debe mostrar carpetas ocultas en el explorador.

EDITAR: Simplemente puede presionar Eliminar del menú desplegable Nombre del servidor / usuario (confirmado que funciona para SSMS v18.0). Fuente original de https://blog.sqlauthority.com/2013/04/17/sql-server-remove-cached-login-from-ssms-connect-dialog-sql-in-sixty-seconds-049/ que mencionó que ¡Esta función está disponible desde 2012!

Robin Luiten
fuente
39
"% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell \ SqlStudio.bin"
abatishchev
8
+1 ¡Gracias! La eliminación C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.binfuncionó para mí en Win7.
IsmailS
66
Puede ser que esta sea otra pregunta, pero me temo que probablemente se cerrará, ya que podría ser muy específico del producto. Pero, ¿hay alguna razón para editar la información que se almacena en los archivos anteriores? Me gustaría eliminar algunos inicios de sesión guardados.
Vikas
55
% AppData% \ Microsoft \ SQL Server Management Studio \ 11.0 \ SqlStudio.bin para SSMS 2012 funcionó para mí.
J Bryan Price
3
Me funcionó con SQL 2008 R2. Solo asegúrese de tener SQL Studio cerrado antes de hacer esto o volverá a crear el archivo casi de inmediato.
Kyle Heon el
36

Para aquellos que buscan la solución SSMS 2012 ... vea esta respuesta:

Eliminar inicio de sesión en caché 2012

Esencialmente, en 2012 puede eliminar el servidor del menú desplegable de la lista de servidores que borra todos los inicios de sesión en caché para ese servidor.

Funciona también en v17 (compilación 14.x).

Edyn
fuente
2
¡Los usuarios de 2014 deberían usar esto! Estoy usando SSMS 2014, no tenía SqlStudio.bin (vea la respuesta superior), pero seguí el enlace en esta respuesta y funcionó (y es mucho más fácil).
yzorg
3
Tenga en cuenta que a pesar del título del enlace en esta respuesta, "Eliminar el inicio de sesión en caché 2012", la respuesta a la que se vincula es sobre cómo eliminar un nombre de servidor en caché , no un inicio de sesión. No leí esa respuesta vinculada con suficiente cuidado y estaba intentando la técnica para eliminar un inicio de sesión único de la lista desplegable de inicio de sesión. Eso no funciona Solo funciona cuando elimina un nombre de servidor de la lista desplegable Nombre del servidor. Además de eliminar el nombre del servidor, también eliminará todos los inicios de sesión en caché para ese nombre de servidor; no puede eliminar un solo inicio de sesión y dejar los demás para ese servidor.
Simon Tewsi
30

En mi caso, solo quería eliminar un nombre de usuario / contraseña específico de la lista que tenía muchas otras conexiones guardadas que no quería olvidar. Resulta que el SqlStudio.binarchivo que otros están discutiendo aquí es una serialización binaria .NET de la Microsoft.SqlServer.Management.UserSettings.SqlStudioclase, que puede ser deserializada, modificada y reserializada para modificar configuraciones específicas.

Para lograr la eliminación del inicio de sesión específico, creé una nueva aplicación de consola C # .Net 4.6.1 y agregué una referencia al espacio de nombres que se encuentra en la siguiente dll: C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\Microsoft.SqlServer.Management.UserSettings.dll(su ruta puede diferir ligeramente dependiendo de la versión de SSMS)

A partir de ahí, podría crear y modificar fácilmente la configuración que desee:

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
fuente
2
Muchas gracias, funcionó de maravilla. ¿Cómo se dio cuenta? 1) Que ese archivo es una serialización binaria .NET de la clase Microsoft.SqlServer.Management.UserSettings.SqlStudio y 2) La referencia al espacio de nombres se encuentra en el dll Microsoft.SqlServer.Management.UserSettings.dll y cómo encontró su ubicación
Dr. Manhattan,
2
@DrManhattan Si serializa en binario una clase .NET muy simple para archivar y abrirla en un editor de texto, verá una combinación de datos binarios y texto. Parte del texto será el valor de sus cadenas (si tiene alguna en la clase que se serializó). Sin embargo, el inicio del archivo serán metadatos sobre el tipo de raíz que se serializó y el ensamblado del que provino. Abra su SqlStudio.binarchivo y verá ambos ..UserSettingsy ..UserSettings.SqlStudio. A partir de ahí, fue fácil de encontrar ..UserSettings.dllen el mismo directorio que ssms.exe, que contenía el espacio de nombres y la clase.
Neil
Eso es genial, gracias. Vi los metadatos Microsoft.SqlServer.Management.UserSettings, Version=14.0.0.0, Culture=neutral..., me has enseñado a pescar, gracias
Dr. Manhattan,
1
Ejecuté este código con el SSMS ejecutándose y luego verifiqué allí para ver si funcionaba reiniciando SSMS, y no funcionó, porque el SqlStudio.bin ya estaba cargado en la memoria por SSMS y luego lo reescribió antes de cerrar. Luego ejecuté el código con SSMS cerrado y funcionó a las mil maravillas.
Muhammad Mamoor Khan
1
Fantástica solución. Funciona perfectamente. Exactamente el resultado que quería lograr sin tener que eliminar todo el archivo bin
Kev Riley
17

Esto funciona para SQL Server Management Studio v18.0

El archivo "SqlStudio.bin" ya no parece existir. En cambio, mi configuración está almacenada en este archivo:

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

  • Ábralo en cualquier editor de texto como Notepad ++
  • ctrl + f para eliminar el nombre de usuario
  • luego elimine todo el <Element>.......</Element>bloque que lo rodea.
pegamentos
fuente
gracias @gluecks! muchas otras publicaciones sugieren que el archivo sqlstudio.bin todavía funciona para v18 pero esa no fue mi experiencia. Ahora, si solo pudiera descubrir qué está borrando el archivo usersettings.xml cada mes o dos. ¡Estoy tan cansado de tener que volver a ingresar a mi lista de servidores!
PTansey
7

Hay una manera realmente simple de hacer esto usando una versión más reciente de SQL Server Management Studio (estoy usando 18.4)

  1. Abra el cuadro de diálogo "Conectar al servidor"
  2. Haga clic en el menú desplegable "Nombre del servidor" para que se abra
  3. Presione la flecha hacia abajo en su teclado para resaltar el nombre del servidor
  4. Presione eliminar en su teclado

Inicio de sesión desaparecido! No perder el tiempo con archivos dlls o bin.

Kevin Brydon
fuente
6

Como señalaron los pegamentos, no más SqlStudio.binen Microsoft SQL Server Management Studio 18 . También encontré esto UserSettings.xmlen C:\Users\userName\AppData\Roaming\Microsoft\SQL Server Management Studio\18.0. Pero quitando el<Element> credencial que contiene no parece funcionar, vuelve directamente al archivo xml, si la cierro y la vuelvo a abrir.

Resulta que primero debe cerrar SQL Server Management Studio y luego editar el UserSettings.xmlarchivo en su editor favorito, por ejemplo, Visual Studio Code. ¿Supongo que está almacenado en caché en algún lugar de SSMS además de este archivo xml? Y no está encendido Control Panel\All Control Panel Items\Credential Manager\Windows Credentials.

Weihui Guo
fuente
4

Para SQL Server Management Studio 2008

  1. Debe ir a C: \ Documents and Settings \% username% \ Application Data \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell

  2. Eliminar SqlStudio.bin

Chicharito
fuente
3

Eliminar:

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

BobbyShaftoe
fuente
1
He instalado MSSSMS2008E en Windows 7 e incluso no tengo mru.data ni en% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell no en% LocalAppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell. Pero la respuesta de Robin Luiten ayuda tanto con Windows XP como con Windows 7. Hasta donde veo, nuestra controversia ocurre a menudo: tinyurl.com/ybc8x8p
abatishchev
2

En XP, el archivo .mru.dat está en C: \ Documents and Settings \ Name \ Application Data \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ ShellSEM

Sin embargo, eliminarlo no hará nada.

Para eliminar la lista en XP, corte el archivo bin de sqlstudio de C: \ Documents and Settings \ Name \ Application Data \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell y péguelo en su escritorio.

Prueba SQL

Si ha funcionado, elimine el archivo bin de sqlstudio del escritorio.

Fácil :)

Dave
fuente