Удаление запомненного списка логина и пароля в 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).

Edyn
источник
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
источник
спасибо @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 "

BobbyShaftoe
источник
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 с рабочего стола.

Легко :)

Дейв
источник