Удаление запомненного списка логина и пароля в SQL Server Management Studio


235

Я недавно пользовался запасным ноутбуком нашей компании (в котором настроен обычный пользователь), пока мой ремонтировали. Я проверил параметр «Запомнить пароль» в SQL Server Management Studio при входе в базу данных.

Мне нужно очистить информацию о логине и пароле, которую я использовал, чтобы запретить следующему человеку, который будет использовать ноутбук, использовать мои логины и пароли. Как я могу это сделать?

Ответы:


334

В другом ответе здесь также упоминается, что с 2012 года вы можете удалить Удалить кэшированный вход через Как удалить кэшированные имена серверов из диалогового окна «Подключение к серверу»? , Только что подтвердил, что удаление в списке MRU отлично работает в 2016 и 2017 годах.

SQL Server Management Studio 2017 удалить файл C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\14.0\SqlStudio.bin

SQL Server Management Studio 2016 удалить файл C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\13.0\SqlStudio.bin

SQL Server Management Studio 2014 удалить файл C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\12.0\SqlStudio.bin

SQL Server Management Studio 2012 удалить файл C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin

SQL Server Management Studio 2008 удалить файл C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin

SQL Server Management Studio 2005 удалить файл - тоже самое, что и выше, но путь Vista. C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat

Это пути к профилям для Vista / 7/8.

РЕДАКТИРОВАТЬ:

Обратите внимание, AppDataэто скрытая папка. Вам нужно показать скрытые папки в проводнике.

РЕДАКТИРОВАТЬ: Вы можете просто нажать «Удалить» в раскрывающемся списке «Сервер / Имя пользователя» (подтверждено, что он работает для SSMS v18.0). Первоисточник из https://blog.sqlauthority.com/2013/04/17/sql-server-remove-cached-login-from-ssms-connect-dialog-sql-in-sixty-seconds-049/, в котором упоминается, что эта функция доступна с 2012 года!


39
«% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell \ SqlStudio.bin»
— абатищев

8
+1 Спасибо! Удаление C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.binработало для меня в Win7.
— IsmailS

6
Может быть, это может быть другой вопрос, но я боюсь, что он, вероятно, закроется, поскольку это может быть очень специфичным для продукта. Но есть ли смысл редактировать информацию, которая хранится в вышеуказанных файлах? Я хотел бы удалить некоторые сохраненные логины.
— Викас

5
% AppData% \ Microsoft \ SQL Server Management Studio \ 11.0 \ SqlStudio.bin для SSMS 2012 работал для меня.
— Джей Брайан Прайс

3
У меня работал с SQL 2008 R2. Просто убедитесь, что у вас есть закрытая SQL Studio, прежде чем вы сделаете это, или он почти сразу же создаст файл заново.
— Кайл Хеон

36

Для тех, кто ищет решение SSMS 2012 ... посмотрите этот ответ:

Удалить кэшированный логин 2012

По сути, в 2012 году вы можете удалить сервер из раскрывающегося списка серверов, который очищает все кэшированные имена входа для этого сервера.

Работает также в v17 (сборка 14.x).


2
2014 пользователи должны использовать это! Я использую SSMS 2014, у меня не было SqlStudio.bin (см. Верхний ответ), но я перешел по ссылке в этом ответе, и это сработало (и намного проще).
— Ёзорг

3
Обратите внимание, что, несмотря на заголовок ссылки в этом ответе «Удалить кэшированный логин 2012», ответ, на который он ссылается, касается того, как удалить кэшированное имя сервера , а не логин. Я недостаточно внимательно прочитал этот связанный ответ и пытался удалить один логин из выпадающего списка «Логин». Это не работает Это работает только когда вы удаляете имя сервера из выпадающего списка Имя сервера. Наряду с удалением имени сервера он также удалит все кэшированные логины для этого имени сервера; Вы не можете удалить только один логин и оставить другие для этого сервера.
— Саймон Тьюси

30

В моем сценарии я только хотел удалить определенное имя пользователя / пароль из списка, в котором было много других сохраненных соединений, которые я не хотел забывать. Оказывается, SqlStudio.binфайл, обсуждаемый здесь другими, представляет собой двоичную сериализацию Microsoft.SqlServer.Management.UserSettings.SqlStudioкласса .NET , которую можно десериализовать, модифицировать и повторно сериализовать для изменения определенных настроек.

Чтобы выполнить удаление определенного имени входа, я создал новое консольное приложение C # .Net 4.6.1 и добавил ссылку на пространство имен, которое находится в следующем dll: C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\Microsoft.SqlServer.Management.UserSettings.dll(ваш путь может немного отличаться в зависимости от версии SSMS)

Оттуда я мог легко создавать и изменять настройки по желанию:

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
Большое спасибо, работал как шарм Как вы выяснили 1) Что этот файл представляет собой двоичную сериализацию .NET класса Microsoft.SqlServer.Management.UserSettings.SqlStudio и 2) Ссылка на пространство имен находится в dll Microsoft.SqlServer.Management.UserSettings.dll и как вы нашли его местоположение
— д-р Манхэттен,

2
@DrManhattan Если вы двоично сериализуете очень простой класс .NET в файл и открываете его в текстовом редакторе, вы увидите смесь двоичных данных и текста. Часть текста будет значениями ваших строк (если они есть в классе, который был сериализован). Однако началом файла будут метаданные о корневом типе, который был сериализован, и сборке, из которой он получен. Откройте свой SqlStudio.binфайл, и вы увидите оба ..UserSettingsи ..UserSettings.SqlStudio. Оттуда это было легко найти ..UserSettings.dllв том же каталоге ssms.exe, что и содержащий пространство имен и класс.
— Нил

Это круто, спасибо. Я видел метаданные Microsoft.SqlServer.Management.UserSettings, Version=14.0.0.0, Culture=neutral..., вы научили меня ловить рыбу, спасибо
— д-р Манхэттен,

1
Я запустил этот код с работающей SSMS, а затем проверил там, работает ли он, перезапустив SSMS, и он не работает, потому что SqlStudio.bin уже был загружен в память SSMS и затем перезаписан им перед закрытием. Затем я запустил код с закрытой SSMS и работал как шарм.
— Мухаммед Мамур Хан

1
Фантастическое решение. Работает отлично. Именно того результата, которого я хотел достичь, не удаляя весь файл bin
— Kev Riley

17

Это работает для SQL Server Management Studio v18.0

Файл SqlStudio.bin, похоже, больше не существует. Вместо этого все мои настройки хранятся в этом файле:

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

  • Откройте его в любом Texteditor, как Notepad ++
  • Ctrl + F для имени пользователя, который будет удален
  • затем удалите весь <Element>.......</Element>блок, который его окружает.

спасибо @gluecks! так много других публикаций предполагают, что файл sqlstudio.bin все еще работает для v18, но это был не мой опыт. Теперь, если бы я мог только выяснить, что стирает файл usersettings.xml каждый месяц или два. Я так устала от необходимости повторно входить в мой список серверов!
— PTansey

7

Есть действительно простой способ сделать это, используя более свежую версию SQL Server Management Studio (я использую 18.4)

  1. Откройте диалоговое окно «Подключение к серверу»
  2. Нажмите раскрывающееся меню «Имя сервера», чтобы открыть его.
  3. Нажмите стрелку вниз на клавиатуре, чтобы выделить имя сервера
  4. Нажмите удалить на клавиатуре

Логин пропал! Нет возиться с DLL или бин файлы.


6

Как указывали глюки, больше нет SqlStudio.binв Microsoft SQL Server Management Studio 18 . Я также нашел это UserSettings.xmlв C:\Users\userName\AppData\Roaming\Microsoft\SQL Server Management Studio\18.0. Но удаление <Element>содержащих учетные данные, кажется, не работает, он возвращается прямо в XML-файл, если я закрою и снова открою его снова.

Оказывается, вам нужно сначала закрыть SQL Server Management Studio , а затем отредактировать UserSettings.xmlфайл в своем любимом редакторе, например, в Visual Studio Code. Я предполагаю, что он кешируется где-то в SSMS помимо этого XML-файла ?! И это не включено Control Panel\All Control Panel Items\Credential Manager\Windows Credentials.


4

Для SQL Server Management Studio 2008

  1. Вам нужно перейти в C: \ Documents and Settings \% username% \ Application Data \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell

  2. Удалить SqlStudio.bin


3

Удалить:

C: \ Documents and Settings \% Ваше имя пользователя% \ Application Data \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ Shell \ mru.dat "


1
Я установил MSSSMS2008E под Windows 7 и даже не имел mru.data ни в% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell, ни в% LocalAppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell. Но ответ Робина Люитена помогает как в Windows XP, так и в Windows 7. Насколько я вижу, наши разногласия происходят часто: tinyurl.com/ybc8x8p
— abatishchev

2

В XP файл .mru.dat находится в C: \ Documents and Settings \ Имя \ Application Data \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ ShellSEM

Тем не менее, удаление этого ничего не сделает.

Чтобы удалить список в XP, вырежьте файл sqlstudio bin из C: \ Documents and Settings \ Имя \ Application Data \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell и вставьте его на рабочий стол.

Попробуй SQL

Если это сработало, удалите файл sqlstudio bin с рабочего стола.

Легко :)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.