Removendo a lista de logon e senha lembrada no SQL Server Management Studio

235

Recentemente, usei o laptop sobressalente da nossa empresa (que possui um usuário geral configurado) enquanto o meu estava sendo reparado. Marquei a opção "Lembrar senha" no SQL Server Management Studio ao fazer login no banco de dados.

Preciso limpar as informações de login e senha que usei para impedir que a próxima pessoa que usar o laptop use meus nomes e senhas de login. Como posso fazer isso?

Emad Armoun
fonte

Respostas:

334

Outra resposta aqui também menciona, desde 2012, que você pode remover o recurso Remover cache de login via Como remover nomes de servidor em cache da caixa de diálogo Conectar-se ao servidor? . Acabei de confirmar que essa exclusão na lista MRU funciona bem em 2016 e 2017.

SQL Server Management Studio 2017 exclua o arquivo C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\14.0\SqlStudio.bin

SQL Server Management Studio 2016 exclua o arquivo C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\13.0\SqlStudio.bin

SQL Server Management Studio 2014 excluir o arquivo C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\12.0\SqlStudio.bin

SQL Server Management Studio 2012 exclua o arquivo C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin

SQL Server Management Studio 2008 exclua o arquivo C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin

O SQL Server Management Studio 2005 exclui o arquivo - o mesmo da resposta acima, mas o caminho do Vista. C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat

Estes são caminhos de perfil para o Vista / 7/8.

EDITAR:

Nota, AppDataé uma pasta oculta. Você precisa mostrar pastas ocultas no explorer.

EDIT: Você pode simplesmente pressionar delete na lista suspensa Nome do Servidor / Usuário (confirmado como trabalhando para o SSMS v18.0). Fonte original de https://blog.sqlauthority.com/2013/04/17/sql-server-remove-cached-login-from-ssms-connect-dialog-sql-in-sixty-seconds-049/, que mencionou isso esse recurso está disponível desde 2012!

Robin Luiten
fonte
39
"% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell \ SqlStudio.bin"
abatishchev
8
+1 Obrigado! A remoção C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.binfuncionou para mim no Win7.
IsmailS
6
Pode ser que essa seja uma outra pergunta, mas tenho medo de que provavelmente seja fechado, pois pode ser muito específico do produto. Mas existe algum motivo para editar as informações armazenadas nos arquivos acima? Gostaria de remover alguns logins salvos.
Vikas
5
% AppData% \ Microsoft \ SQL Server Management Studio \ 11.0 \ SqlStudio.bin para o SSMS 2012 funcionou para mim.
J Bryan Preço
3
Trabalhou para mim com o SQL 2008 R2. Apenas verifique se o SQL Studio foi fechado antes de fazer isso ou se ele recria o arquivo quase imediatamente.
precisa
36

Para quem procura a solução SSMS 2012 ... veja esta resposta:

Remover login em cache 2012

Essencialmente, em 2012, você pode excluir o servidor na lista suspensa de servidores, que limpa todos os logins em cache desse servidor.

Funciona também na v17 (compilação 14.x).

Edyn
fonte
2
Os usuários de 2014 devem usar isso! Estou usando o SSMS 2014, não tinha o SqlStudio.bin (consulte a resposta superior), mas segui o link nesta resposta e funcionou (e é muito mais fácil).
Yzorg 15/05
3
Observe que, apesar do título do link nesta resposta, "Remover logon em cache 2012", a resposta à qual ele vincula é sobre como excluir um nome de servidor em cache , não um logon. Não li a resposta vinculada com cuidado e estava tentando a técnica para remover um único login da lista suspensa Login. Isso não funciona. Funciona apenas quando você está removendo um nome de servidor da lista suspensa Nome do servidor. Além de excluir o nome do servidor, ele também excluirá todos os logins em cache desse nome; você não pode excluir apenas um único login e deixar os outros para esse servidor.
Simon Tewsi
30

No meu cenário, eu só queria remover um nome de usuário / senha específico da lista que tivesse muitas outras conexões salvas que não queria esquecer. Acontece que o SqlStudio.binarquivo que os outros estão discutindo aqui é uma serialização binária .NET da Microsoft.SqlServer.Management.UserSettings.SqlStudioclasse, que pode ser desserializada, modificada e resserializada para modificar configurações específicas.

Para concluir a remoção do logon específico, criei um novo aplicativo de console do C # .Net 4.6.1 e adicionei uma referência ao espaço para nome localizado na seguinte dll: C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\Microsoft.SqlServer.Management.UserSettings.dll(seu caminho pode variar um pouco dependendo da versão do SSMS)

A partir daí, eu poderia facilmente criar e modificar as configurações conforme desejado:

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
fonte
2
Muito obrigado, funcionou como um encanto. Como você descobriu 1) Que esse arquivo é uma serialização binária .NET da classe Microsoft.SqlServer.Management.UserSettings.SqlStudio e 2) A referência ao espaço para nome está localizada na dll Microsoft.SqlServer.Management.UserSettings.dll e como você encontrou a sua localização
Dr. Manhattan
2
@DrManhattan Se você serializar binário uma classe .NET muito simples para arquivar e abri-la em um editor de texto, verá uma mistura de dados e texto binários. Parte do texto será o valor das suas strings (se houver alguma na classe que foi serializada). No entanto, o início do arquivo será metadado sobre o tipo raiz que foi serializado e o assembly de onde veio. Abra seu SqlStudio.binarquivo e você verá ambos ..UserSettingse ..UserSettings.SqlStudio. A partir daí, foi fácil encontrar ..UserSettings.dllo mesmo diretório ssms.exeque continha o namespace e a classe.
Neil
Isso é demais, obrigado. Eu vi os metadados Microsoft.SqlServer.Management.UserSettings, Version=14.0.0.0, Culture=neutral..., você me ensinou a pescar, graças
Dr. Manhattan
1
Eu executei esse código com o SSMS em execução e verifiquei lá para ver se funcionava reiniciando o SSMS e não funcionava, porque o SqlStudio.bin já estava carregado na memória pelo SSMS e depois reescrito antes de fechar. Então eu corri o código com o SSMS fechado e funcionou como um encanto.
Muhammad Mamoor Khan
1
Solução fantástica. Funciona perfeitamente. Exatamente o resultado que eu queria alcançar, sem ter que eliminar todo o arquivo bin
Kev Riley
17

Isso funciona para o SQL Server Management Studio v18.0

O arquivo "SqlStudio.bin" parece não existir mais. Em vez disso, minhas configurações estão todas armazenadas neste arquivo:

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

  • Abra-o em qualquer Texteditor como o Notepad ++
  • ctrl + f para o nome de usuário a ser removido
  • exclua o <Element>.......</Element>bloco inteiro que o rodeia.
gluecks
fonte
obrigado @gluecks! muitas outras postagens sugerem que o arquivo sqlstudio.bin ainda funciona para a v18, mas essa não foi a minha experiência. Agora, se eu pudesse descobrir o que está acabando com o arquivo usersettings.xml todos os meses ou dois. Estou tão cansado de ter que entrar novamente na minha lista de servidores!
PTansey 11/06
7

Existe uma maneira realmente simples de fazer isso usando uma versão mais recente do SQL Server Management Studio (estou usando o 18.4)

  1. Abra a caixa de diálogo "Conectar ao servidor"
  2. Clique no menu suspenso "Nome do servidor" para abrir
  3. Pressione a seta para baixo no teclado para destacar o nome de um servidor
  4. Pressione delete no seu teclado

O login foi encerrado! Não brinque com dlls ou arquivos bin.

Kevin Brydon
fonte
6

Como apontado por gluecks, não há mais SqlStudio.binno Microsoft SQL Server Management Studio 18 . Eu também encontrei isso UserSettings.xmlem C:\Users\userName\AppData\Roaming\Microsoft\SQL Server Management Studio\18.0. Mas remover a <Element>credencial que contém não parece funcionar, ele volta ao arquivo xml, se eu o fechar e reabrir novamente.

Acontece que você precisa fechar o SQL Server Management Studio primeiro e depois editar o UserSettings.xmlarquivo no seu editor favorito, por exemplo, código do Visual Studio. Eu acho que é armazenado em cache em algum lugar no SSMS além deste arquivo xml ?! E não está ligado Control Panel\All Control Panel Items\Credential Manager\Windows Credentials.

Weihui Guo
fonte
4

Para o SQL Server Management Studio 2008

  1. Você precisa acessar C: \ Documents and Settings \% nome de usuário% \ Application Data \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell

  2. Excluir SqlStudio.bin

Chicharito
fonte
3

Excluir:

C: \ Documents and Settings \% Seu nome de usuário% \ Dados do aplicativo \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ Shell \ mru.dat "

BobbyShaftoe
fonte
1
Instalei o MSSSMS2008E no Windows 7 e nem mesmo mru.data em% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell não em% LocalAppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell. Mas a resposta de Robin Luiten ajuda no Windows XP e no Windows 7. Tanto quanto vejo nossa controvérsia, muitas vezes: tinyurl.com/ybc8x8p
abatishchev
2

No XP, o arquivo .mru.dat está em C: \ Documents and Settings \ Name \ Application Data \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ ShellSEM

No entanto, removê-lo não fará nada.

Para remover a lista no XP, recorte o arquivo bin sqlstudio em C: \ Documentos e configurações \ Nome \ Dados de aplicativos \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell e cole-o na área de trabalho.

Experimente o SQL

Se tiver funcionado, exclua o arquivo bin sqlstudio da área de trabalho.

Fácil :)

Dave
fonte