Видалення запам'ятовуваного списку для входу та пароля в SQL Server Management Studio


235

Нещодавно я використовував запасний ноутбук нашої компанії (на якому встановлено загальний користувач) під час ремонту шахти. Я перевірив параметр "Запам'ятати пароль" в студії управління SQL Server при вході в базу даних.

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

Відповіді:


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це прихована папка. Вам потрібно показати приховані папки в Explorer.

РЕДАКТУВАННЯ: Ви можете просто натиснути видалити зі спадного списку Імені сервера / користувача (підтверджено, що він працює для 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 \ Інструменти \ Shell \ SqlStudio.bin"
абатищев

8
+1 Дякую! Видалення C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.binпрацювало для мене в Win7.
Ісмаїл

6
Це може бути ще одне питання, але я боюся, що він, швидше за все, закриється, оскільки це може бути дуже специфічним для продукту. Але чи є чому, щоб редагувати інформацію, яка зберігається у вищезазначених файлах? Я хотів би видалити збережені реєстраційні дані.
Вікас

5
Для мене працювала % AppData% \ Microsoft \ SQL Server Studio 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 (див. Головну відповідь), але я перейшов за посиланням у цій відповіді, і воно працювало (і це набагато простіше).
yzorg

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
Фантастичне рішення. Працює чудово. Саме такого результату я хотів досягти, не видаляючи весь файл бін
Кев Райлі

17

Це працює для SQL Server Management Studio v18.0

Файл "SqlStudio.bin", здається, вже не існує. Натомість мої налаштування зберігаються у цьому файлі:

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

  • Відкрийте його в будь-якому текстовому редакторі, як 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 , а потім відредагувати UserSettings.xmlфайл у вашому улюбленому редакторі, наприклад Visual Studio Code. Я думаю, що він кешований десь у SSMS, окрім цього XML-файлу ?! І це не на Control Panel\All Control Panel Items\Credential Manager\Windows Credentials.


4

Для студії управління SQL Server 2008

  1. Вам потрібно перейти C: \ Документи та налаштування \% ім'я користувача% \ Дані програми \ Microsoft \ Microsoft SQL Server \ 100 \ Інструменти \ Shell

  2. Видалити SqlStudio.bin


3

Видалити:

C: \ Документи та налаштування \% Ваше ім'я користувача% \ Дані програми \ Microsoft \ Microsoft SQL Server \ 90 \ Інструменти \ 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: \ Документи та параметри \ Ім'я \ Дані програми \ Microsoft \ Microsoft SQL Server \ 90 \ Інструменти \ ShellSEM

Однак видалити його нічого не призведе.

Щоб видалити список у XP, виріжте файл sqlstudio bin з C: \ Документи та параметри \ Ім'я \ Дані програми \ Microsoft \ Microsoft SQL Server \ 100 \ Інструменти \ Shell та вставте його на робочий стіл.

Спробуйте SQL

Якщо він спрацював, видаліть файл sqlstudio bin з робочого столу.

Легко :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.