Menghapus daftar login dan kata sandi yang diingat dalam SQL Server Management Studio

235

Baru-baru ini saya menggunakan laptop cadangan perusahaan kami (yang memiliki pengaturan pengguna umum) ketika laptop saya sedang diperbaiki. Saya telah memeriksa opsi "Ingat kata sandi" di SQL Server Management Studio ketika masuk ke database.

Saya perlu menghapus informasi login dan kata sandi yang telah saya gunakan untuk mencegah orang berikutnya yang akan menggunakan laptop dari menggunakan nama login dan kata sandi saya. Bagaimana saya bisa melakukan ini?

Emad Armoun
sumber

Jawaban:

334

Jawaban lain di sini juga menyebutkan sejak 2012 Anda dapat menghapus Hapus login cache melalui Bagaimana cara menghapus nama server cache dari dialog Connect to Server? . Baru saja mengonfirmasi penghapusan ini dalam daftar MRU berfungsi dengan baik pada tahun 2016 dan 2017.

SQL Server Management Studio 2017 menghapus file C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\14.0\SqlStudio.bin

SQL Server Management Studio 2016 menghapus file C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\13.0\SqlStudio.bin

SQL Server Management Studio 2014 menghapus file C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\12.0\SqlStudio.bin

SQL Server Management Studio 2012 menghapus file C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin

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

SQL Server Management Studio 2005 menghapus file - sama seperti jawaban di atas tetapi jalur Vista. C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat

Ini adalah jalur profil untuk Vista / 7/8.

EDIT:

Catatan, AppDataadalah folder tersembunyi. Anda perlu menampilkan folder tersembunyi di penjelajah.

EDIT: Anda cukup menekan delete dari drop down Server / Nama pengguna (dikonfirmasi berfungsi untuk SSMS v18.0). Sumber asli dari https://blog.sqlauthority.com/2013/04/17/sql-server-remove-cached-login-from-ssms-connect-dialog-sql-in-sixty-seconds-049/ yang menyebutkan bahwa fitur ini tersedia sejak 2012!

Robin Luiten
sumber
39
"% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell \ SqlStudio.bin"
abatishchev
8
+1 Terima kasih! Menghapus C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.binberhasil untuk saya di Win7.
Ismail
6
Mungkin ini bisa menjadi pertanyaan lain, tapi saya khawatir kemungkinan akan tertutup karena bisa sangat spesifik untuk produk. Tetapi adakah alasan untuk mengedit informasi yang disimpan dalam file di atas? Saya ingin menghapus beberapa login yang disimpan.
Vikas
5
% AppData% \ Microsoft \ SQL Server Management Studio \ 11.0 \ SqlStudio.bin untuk SSMS 2012 bekerja untuk saya.
J Bryan Harga
3
Bekerja untuk saya dengan SQL 2008 R2. Pastikan Anda memiliki SQL Studio yang ditutup sebelum Anda melakukan ini atau itu membuat ulang file segera.
Kyle Heon
36

Bagi mereka yang mencari solusi SSMS 2012 ... lihat jawaban ini:

Hapus login cache 2012

Pada dasarnya, pada 2012 Anda dapat menghapus server dari dropdown daftar server yang menghapus semua login yang di-cache untuk server itu.

Bekerja juga di v17 (build 14.x).

Edyn
sumber
2
Pengguna 2014 harus menggunakan ini! Saya menggunakan SSMS 2014, saya tidak memiliki SqlStudio.bin (lihat jawaban atas), tetapi saya mengikuti tautan dalam jawaban ini dan itu berhasil (dan jauh lebih mudah).
yzorg
3
Perhatikan bahwa terlepas dari judul tautan dalam jawaban ini, "Hapus login cache 2012", jawaban yang dilinkkannya adalah tentang cara menghapus nama server yang di- cache , bukan login. Saya tidak membaca jawaban tertaut itu dengan cukup hati-hati dan sedang mencoba teknik untuk menghapus satu login dari daftar dropdown Login. Itu tidak berhasil. Ini hanya berfungsi ketika Anda menghapus nama server dari daftar dropdown Nama Server. Seiring dengan menghapus nama server, itu juga akan menghapus semua login cache untuk nama server itu; Anda tidak dapat menghapus hanya satu login dan meninggalkan yang lain untuk server itu.
Simon Tewsi
30

Dalam skenario saya, saya hanya ingin menghapus nama pengguna / kata sandi tertentu dari daftar yang memiliki banyak koneksi tersimpan lainnya yang tidak ingin saya lupakan. Ternyata SqlStudio.binfile yang sedang didiskusikan orang lain di sini adalah serialisasi .NET biner dari Microsoft.SqlServer.Management.UserSettings.SqlStudiokelas, yang dapat dideeralisasi, dimodifikasi, dan diserialisasi untuk mengubah pengaturan tertentu.

Untuk menyelesaikan penghapusan login tertentu, saya membuat aplikasi konsol C # .Net 4.6.1 yang baru dan menambahkan referensi ke namespace yang terletak di dll berikut: C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\Microsoft.SqlServer.Management.UserSettings.dll(jalur Anda mungkin sedikit berbeda tergantung pada versi SSMS)

Dari sana saya dapat dengan mudah membuat dan memodifikasi pengaturan yang diinginkan:

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
sumber
2
Terima Kasih Microsoft.SqlServer.Management.UserSettings.dll dan bagaimana Anda menemukan lokasinya
Dr Manhattan
2
@DrManhattan Jika Anda membuat serial cerita biner .NET class yang sangat sederhana dan membukanya di editor teks, Anda akan melihat campuran data biner dan teks. Beberapa teks akan menjadi nilai dari string Anda (jika Anda punya di kelas yang diserialisasi). Namun awal file akan menjadi metadata tentang tipe root yang diserialisasi dan rakitan dari mana asalnya. Buka SqlStudio.binfile Anda dan Anda akan melihat keduanya ..UserSettingsdan ..UserSettings.SqlStudio. Dari sana mudah ditemukan ..UserSettings.dlldi direktori yang sama ssms.exe, yang berisi namespace dan kelas.
Neil
Itu luar biasa, terima kasih. Saya melihat metadata Microsoft.SqlServer.Management.UserSettings, Version=14.0.0.0, Culture=neutral..., Anda telah mengajari saya cara memancing, terima kasih
Dr Manhattan
1
Saya menjalankan kode ini dengan SSMS berjalan dan kemudian memeriksa di sana untuk melihat apakah itu bekerja dengan me-restart SSMS, dan itu tidak berfungsi, karena SqlStudio.bin sudah dimuat dalam memori oleh SSMS dan kemudian ditulis ulang sebelum ditutup. Kemudian saya menjalankan kode dengan SSMS ditutup dan bekerja seperti pesona.
Muhammad Mamoor Khan
1
Solusi yang fantastis. Bekerja dengan sempurna. Persis hasil yang ingin saya capai tanpa harus menghapus seluruh file bin
Kev Riley
17

Ini berfungsi untuk SQL Server Management Studio v18.0

File "SqlStudio.bin" tampaknya tidak ada lagi. Alih-alih pengaturan saya semua disimpan dalam file ini:

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

  • Buka di Texteditor seperti Notepad ++
  • ctrl + f untuk menghapus nama pengguna
  • lalu hapus seluruh <Element>.......</Element>blok yang mengelilinginya.
gluecks
sumber
terima kasih @ gluecks! begitu banyak posting lain menyarankan file sqlstudio.bin masih berfungsi untuk v18 tapi itu bukan pengalaman saya. Sekarang jika saya hanya bisa mencari tahu apa yang memusnahkan file usersettings.xml setiap bulan atau dua. Saya sangat lelah karena harus memasukkan kembali daftar server saya!
PTansey
7

Ada cara yang sangat sederhana untuk melakukan ini menggunakan versi yang lebih baru dari SQL Server Management Studio (Saya menggunakan 18,4)

  1. Buka dialog "Hubungkan ke Server"
  2. Klik tarik-turun "Nama Server" sehingga terbuka
  3. Tekan panah bawah pada keyboard Anda untuk menyorot nama server
  4. Tekan delete pada keyboard Anda

Login hilang! Tidak main-main dengan file dll atau bin.

Kevin Brydon
sumber
6

Seperti gluecks menunjukkan, tidak ada lagi SqlStudio.bindi Microsoft SQL Server Management Studio 18 . Saya juga menemukan ini UserSettings.xmldi C:\Users\userName\AppData\Roaming\Microsoft\SQL Server Management Studio\18.0. Tetapi menghapus <Element>kredensial yang berisi tampaknya tidak berfungsi, itu datang kembali pada file xml, jika saya menutup dan membukanya kembali.

Ternyata, Anda harus menutup SQL Server Management Studio , lalu mengedit UserSettings.xmlfile di editor favorit Anda, misalnya Visual Studio Code. Saya kira itu di-cache di suatu tempat di SSMS selain file xml ini ?! Dan itu tidak aktif Control Panel\All Control Panel Items\Credential Manager\Windows Credentials.

Weihui Guo
sumber
4

Untuk SQL Server Management Studio 2008

  1. Anda harus masuk C: \ Documents and Settings \% username% \ Data Aplikasi \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell

  2. Hapus SqlStudio.bin

Chicharito
sumber
3

Menghapus:

C: \ Documents and Settings \% Nama Pengguna Anda% \ Data Aplikasi \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ Shell \ mru.dat "

BobbyShaftoe
sumber
1
Saya telah menginstal MSSSMS2008E di Windows 7 dan bahkan belum mru.data juga dalam% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell tidak dalam% LocalAppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell. Tetapi jawaban Robin Luiten membantu di bawah Windows XP dan Windows 7. Sejauh yang saya lihat, kontroversi kami sering terjadi: tinyurl.com/ybc8x8p
abatishchev
2

Di XP, file .mru.dat ada di C: \ Documents and Settings \ Name \ Application Data \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ ShellSEM

Namun, menghapusnya tidak akan melakukan apa-apa.

Untuk menghapus daftar di XP, potong file bin sqlstudio dari C: \ Documents and Settings \ Name \ Application Data \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell dan tempel di desktop Anda.

Coba SQL

Jika sudah berhasil, maka hapus file bin sqlstudio dari desktop.

Mudah :)

Dave
sumber