Xóa danh sách đăng nhập và mật khẩu đã nhớ trong SQL Server Management Studio


235

Gần đây tôi đã sử dụng máy tính xách tay dự phòng của công ty chúng tôi (có cài đặt người dùng chung) trong khi máy của tôi đang được sửa chữa. Tôi đã kiểm tra tùy chọn "Ghi nhớ mật khẩu" trong SQL Server Management Studio khi đăng nhập vào cơ sở dữ liệu.

Tôi cần xóa thông tin đăng nhập và mật khẩu mà tôi đã sử dụng để ngăn người tiếp theo sẽ sử dụng máy tính xách tay sử dụng tên đăng nhập và mật khẩu của tôi. Tôi có thể làm cái này như thế nào?

Câu trả lời:


334

Một câu trả lời khác ở đây cũng đề cập từ năm 2012, bạn có thể xóa Xóa đăng nhập được lưu trong bộ nhớ cache thông qua Làm thế nào để xóa tên máy chủ được lưu trong bộ nhớ cache khỏi hộp thoại Connect to Server? . Chỉ cần xác nhận xóa này trong danh sách MRU hoạt động tốt trong năm 2016 và 2017.

SQL Server Management Studio 2017 xóa tệp C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\14.0\SqlStudio.bin

SQL Server Management Studio 2016 xóa tệp C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\13.0\SqlStudio.bin

SQL Server Management Studio 2014 xóa tệp C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\12.0\SqlStudio.bin

SQL Server Management Studio 2012 xóa tệp C:\Users\%username%\AppData\Roaming\Microsoft\SQL Server Management Studio\11.0\SqlStudio.bin

SQL Server Management Studio 2008 xóa tệp C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin

SQL Server Management Studio 2005 xóa tệp - giống như câu trả lời ở trên nhưng đường dẫn Vista. C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat

Đây là các đường dẫn hồ sơ cho Vista / 7/8.

BIÊN TẬP:

Ghi chú, AppData là một thư mục ẩn. Bạn cần hiển thị các thư mục ẩn trong explorer.

EDIT: Bạn chỉ cần nhấn xóa từ trình đơn thả xuống Tên máy chủ / Tên người dùng (được xác nhận là đang hoạt động cho SSMS v18.0). Nguồn gốc từ https://blog.sqlauthority.com/2013/04/17/sql-server-remove-cached-login-from-ssms-connect-dialog-sql-in-sixty-seconds-049/ đã đề cập rằng tính năng này có sẵn từ năm 2012!


39
"% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell \ SqlStudio.bin"
abatishchev

8
+1 Cảm ơn! Loại bỏ C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.binlàm việc cho tôi trong Win7.
IsmailS

6
Có thể đây có thể là một câu hỏi khác, nhưng tôi e rằng nó có thể sẽ đóng lại vì nó có thể rất cụ thể về sản phẩm. Nhưng có bất kỳ lý do tại sao để chỉnh sửa thông tin được lưu trữ trong các tập tin trên? Tôi muốn xóa một số thông tin đăng nhập đã lưu.
Vikas

5
% AppData% \ Microsoft \ SQL Server Management Studio \ 11.0 \ SqlStudio.bin cho SSMS 2012 hoạt động với tôi.
J Bryan Giá

3
Làm việc cho tôi với SQL 2008 R2. Chỉ cần chắc chắn rằng bạn đã đóng SQL Studio trước khi bạn thực hiện việc này hoặc nó sẽ tạo lại tệp gần như ngay lập tức.
Kyle Heon

36

Đối với những người tìm kiếm giải pháp SSMS 2012 ... hãy xem câu trả lời này:

Xóa đăng nhập bộ nhớ cache 2012

Về cơ bản, vào năm 2012, bạn có thể xóa máy chủ khỏi danh sách máy chủ thả xuống để xóa tất cả các thông tin đăng nhập được lưu trong bộ nhớ cache cho máy chủ đó.

Hoạt động trong v17 (xây dựng 14.x).


2
Người dùng 2014 nên sử dụng cái này! Tôi đang sử dụng SSMS 2014, tôi không có SqlStudio.bin (xem câu trả lời hàng đầu), nhưng tôi đã theo liên kết trong câu trả lời này và nó đã hoạt động (và dễ dàng hơn nhiều).
yzorg

3
Lưu ý rằng mặc dù tiêu đề của liên kết trong câu trả lời này là "Xóa đăng nhập được lưu trong bộ nhớ cache 2012", câu trả lời mà nó liên kết là về cách xóa tên máy chủ được lưu trong bộ nhớ cache , không phải đăng nhập. Tôi đã không đọc câu trả lời được liên kết đó đủ cẩn thận và đang thử kỹ thuật xóa một lần đăng nhập khỏi danh sách thả xuống Đăng nhập. Điều đó không hiệu quả. Nó chỉ hoạt động khi bạn xóa tên máy chủ khỏi danh sách thả xuống Tên máy chủ. Cùng với việc xóa tên máy chủ, nó cũng sẽ xóa tất cả các thông tin đăng nhập được lưu trong bộ nhớ cache cho tên máy chủ đó; bạn không thể xóa chỉ một lần đăng nhập và để lại những người khác cho máy chủ đó.
Simon Tewsi

30

Trong kịch bản của tôi, tôi chỉ muốn xóa tên người dùng / mật khẩu cụ thể khỏi danh sách có nhiều kết nối đã lưu khác mà tôi không muốn quên. Hóa ra SqlStudio.bintập tin mà những người khác đang thảo luận ở đây là một tuần tự nhị phân .NET củaMicrosoft.SqlServer.Management.UserSettings.SqlStudio lớp, có thể được giải , sửa đổi và định cỡ lại để sửa đổi các cài đặt cụ thể.

Để thực hiện xóa thông tin đăng nhập cụ thể, tôi đã tạo một ứng dụng bảng điều khiển C # .Net 4.6.1 mới và thêm một tham chiếu đến không gian tên nằm trong dll sau: C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\Microsoft.SqlServer.Management.UserSettings.dll (đường dẫn của bạn có thể hơi khác nhau tùy thuộc vào phiên bản SSMS)

Từ đó tôi có thể dễ dàng tạo và sửa đổi các cài đặt như mong muốn:

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
Cảm ơn bạn rất nhiều, làm việc như một cơ duyên Làm thế nào bạn tìm ra 1) Tập tin đó là một tuần tự nhị phân .NET của lớp Microsoft.SqlServer.Man Quản lý Microsoft.SqlServer.Man Quản lý.UserSinstall.dll và cách bạn tìm thấy vị trí của nó
Dr Manhattan

2
@DrManhattan Nếu bạn nhị phân hóa một lớp .NET rất đơn giản để tập tin và mở nó trong trình soạn thảo văn bản, bạn sẽ thấy một hỗn hợp dữ liệu nhị phân và văn bản. Một số văn bản sẽ là các giá trị của chuỗi của bạn (nếu bạn có bất kỳ trong lớp đã được tuần tự hóa). Tuy nhiên, phần đầu của tệp sẽ là siêu dữ liệu về loại gốc được nối tiếp và tập hợp nó đến từ đó. Mở SqlStudio.bintập tin của bạn và bạn sẽ thấy cả hai ..UserSettings..UserSettings.SqlStudio. Từ đó có thể dễ dàng tìm thấy ..UserSettings.dlltrong cùng thư mục ssms.exechứa, chứa không gian tên và lớp.
Neil

Thật tuyệt vời, cảm ơn. Tôi đã thấy siêu dữ liệu Microsoft.SqlServer.Management.UserSettings, Version=14.0.0.0, Culture=neutral..., bạn đã dạy tôi cách câu cá, cảm ơn
Tiến sĩ Manhattan

1
Tôi đã chạy mã này với SSMS đang chạy và sau đó kiểm tra xem nó có hoạt động không bằng cách khởi động lại SSMS và nó không hoạt động, vì SqlStudio.bin đã được SSMS tải vào bộ nhớ và sau đó được viết lại trước khi đóng. Sau đó, tôi chạy mã với SSMS đóng và làm việc như một lá bùa.
Muhammad Mamoor Khan

1
Giải pháp tuyệt vời. Hoạt động hoàn hảo. Chính xác là kết quả tôi muốn đạt được mà không phải xóa toàn bộ tệp bin
Kev Riley

17

Điều này hoạt động cho SQL Server Management Studio v18.0

Tệp "SqlStudio.bin" dường như không còn tồn tại nữa. Thay vào đó, tất cả các cài đặt của tôi được lưu trữ trong tệp này:

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

  • Mở nó trong bất kỳ Texteditor nào như Notepad ++
  • ctrl + f để xóa tên người dùng
  • sau đó xóa toàn bộ <Element>.......</Element>khối bao quanh nó.

cảm ơn bạn @gluecks! rất nhiều bài viết khác cho thấy tệp sqlstudio.bin vẫn hoạt động cho v18 nhưng đó không phải là kinh nghiệm của tôi. Bây giờ nếu tôi chỉ có thể tìm ra những gì đang xóa sạch tệp usersinstall.xml mỗi tháng hoặc hai tháng. Tôi rất mệt mỏi khi phải nhập lại danh sách máy chủ của mình!
PTansey

7

Có một cách thực sự đơn giản để thực hiện việc này bằng phiên bản SQL Server Management Studio mới hơn (Tôi đang sử dụng 18.4)

  1. Mở hộp thoại "Kết nối với máy chủ"
  2. Nhấp vào menu thả xuống "Tên máy chủ" để nó mở ra
  3. Nhấn mũi tên xuống trên bàn phím của bạn để tô sáng tên máy chủ
  4. Nhấn xóa trên bàn phím của bạn

Đăng nhập đi! Không làm phiền với các tập tin dll hoặc bin.


6

Như gluecks đã chỉ ra, không còn nữa SqlStudio.bintrong Microsoft SQL Server Management Studio 18 . Tôi cũng tìm thấy điều này UserSettings.xmltrong C:\Users\userName\AppData\Roaming\Microsoft\SQL Server Management Studio\18.0. Nhưng loại bỏ <Element>thông tin chứa thông tin có vẻ không hoạt động, nó sẽ quay lại ngay trên tệp xml, nếu tôi đóng và mở lại.

Hóa ra, trước tiên bạn cần đóng SQL Server Management Studio , sau đó chỉnh sửa UserSettings.xmltệp trong trình chỉnh sửa yêu thích của bạn, ví dụ Visual Studio Code. Tôi đoán nó được lưu ở đâu đó trong SSMS bên cạnh tệp xml này?! Và nó không phải trên Control Panel\All Control Panel Items\Credential Manager\Windows Credentials.


4

Đối với SQL Server Management Studio 2008

  1. Bạn cần phải đi C: \ Documents and Settings \% username% \ Application Data \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell

  2. Xóa SqlStudio.bin


3

Xóa bỏ:

C: \ Tài liệu và Cài đặt \% Tên người dùng của bạn% \ Dữ liệu ứng dụng \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ Shell \ mru.dat "


1
Tôi đã cài đặt MSSSMS2008E trong Windows 7 và thậm chí không có mru.data cũng không trong% AppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell không có trong% LocalAppData% \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell. Nhưng câu trả lời của Robin Luiten giúp cả Windows XP và Windows 7. Theo như tôi thấy thì tranh cãi của chúng tôi thường diễn ra: tinyurl.com/ybc8x8p
abatishchev

2

Trong XP, tệp .mru.dat nằm trong C: \ Documents and Settings \ Name \ Application Data \ Microsoft \ Microsoft SQL Server \ 90 \ Tools \ ShellSEM

Tuy nhiên, loại bỏ nó sẽ không làm gì cả.

Để xóa danh sách trong XP, hãy cắt tệp bin sqlstudio khỏi C: \ Documents and Settings \ Name \ Application Data \ Microsoft \ Microsoft SQL Server \ 100 \ Tools \ Shell và dán nó vào màn hình của bạn.

Hãy thử SQL

Nếu nó đã hoạt động, sau đó xóa tệp bin sqlstudio khỏi máy tính để bàn.

Dễ dàng :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.