Pertanyaan Bagaimana cara menghapus entri server di "Connect to Server" pada SQL Server Management Studio? [duplikat]


Kemungkinan Duplikat:
Bagaimana cara menghapus item "Nama server" dari sejarah SQL Server Management Studio 

Pada layar "Connect to Server", SQL Server Management Studio menyimpan semua entri yang pernah Anda masukkan untuk Nama Server, login, dan kata sandi. Ini sangat membantu, tetapi dari waktu ke waktu hal-hal berubah, alamat server berubah, database tidak lagi tersedia.

Bagaimana saya bisa menghapus entri server dari layar ini? Juga, ketika Anda memilih server, login yang lalu tersedia dalam daftar. Sekali lagi, ini berubah. Bagaimana saya bisa menghapus entri pengguna?

Connect to Server screen


32
2018-06-03 16:51


asal


Jawaban:


Sepertinya file ini adalah versi serial biner dari Microsoft.SqlServer.Management.UserSettings.SqlStudio kelas didefinisikan dalam Microsoft.SqlServer.Management.UserSettings, Versi = 10.0.0.0, Budaya = netral, PublicKeyToken = 89845dcd8080cc91 perakitan (terletak di c: \ Program Files \ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \ Microsoft.SqlServer.Management.UserSettings.dll).

Dengan sedikit keterampilan pengembangan (Visual Studio atau bahkan Powershell) Anda dapat deserialize file ini ke dalam kelas asli, temukan entri yang ingin Anda hapus dan kembali bersambung kembali file tersebut.

Ini akan memberi Anda ide (bekerja pada salinan file bin) ...

var binaryFormatter = new BinaryFormatter();
var inStream = new MemoryStream(File.ReadAllBytes(@"c:\temp\SqlStudio.bin"));
var settings = (SqlStudio) binaryFormatter.Deserialize(inStream);
foreach (var pair in settings.SSMS.ConnectionOptions.ServerTypes)
{
    ServerTypeItem serverTypeItem = pair.Value;
    List<ServerConnectionItem> toRemove = new List<ServerConnectionItem>();
    foreach (ServerConnectionItem server in serverTypeItem.Servers)
    {
        if (server.Instance != "the server you want to remove")
        {
            continue;
        }
        toRemove.Add(server);
    }
    foreach (ServerConnectionItem serverConnectionItem in toRemove)
    {
        serverTypeItem.Servers.RemoveItem(serverConnectionItem);
    }
}

MemoryStream outStream = new MemoryStream();
binaryFormatter.Serialize(outStream, settings);
byte[] outBytes = new byte[outStream.Length];
outStream.Position = 0;
outStream.Read(outBytes, 0, outBytes.Length);
File.WriteAllBytes(@"c:\temp\SqlStudio.bin", outBytes);

Setelah pertanyaan Adrian, saya mencoba ini lagi pada kotak Win7 x64 menggunakan Visual Studio 2010. Saya menemukan kesalahan yang sama jadi, setelah menggali sedikit saya menemukan itu mengambil sejumlah langkah untuk menyelesaikan.

  1. Tetapkan target Platform ke 'x86' di properti proyek
  2. tambahkan referensi ke Microsoft.SqlServer.Management.SDK.SqlStudio (pada kotak saya ini berada di c: \ Program Files \ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \ Microsoft.SqlServer.Management.Sdk. SqlStudio.dll)
  3. tambahkan referensi ke Microsoft.SqlServer.Management.UserSettings (di direktori yang sama pada yang sebelumnya)
  4. melakukan resolusi perakitan kustom

Resolusi perakitan kustom mengambil sedikit karena tidak jelas (bagi saya, setidaknya) mengapa CLR tidak akan menyelesaikan perakitan dengan benar dan mengapa Visual Studio tidak akan memungkinkan saya untuk menambahkan referensi secara manual. Saya sedang berbicara tentang SqlWorkbench.Interfaces.dll.

Kode yang diperbarui terlihat seperti ini:

internal class Program
    {
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;

            var binaryFormatter = new BinaryFormatter();
            var inStream = new MemoryStream(File.ReadAllBytes(@"c:\temp\SqlStudio.bin"));
            var settings = (SqlStudio) binaryFormatter.Deserialize(inStream);
            foreach (var pair in settings.SSMS.ConnectionOptions.ServerTypes)
            {
                ServerTypeItem serverTypeItem = pair.Value;

                List<ServerConnectionItem> toRemove = new List<ServerConnectionItem>();
                foreach (ServerConnectionItem server in serverTypeItem.Servers)
                {
                    if (server.Instance != "the server you want to remove")
                    {
                        continue;
                    }
                    toRemove.Add(server);
                }
                foreach (ServerConnectionItem serverConnectionItem in toRemove)
                {
                    serverTypeItem.Servers.RemoveItem(serverConnectionItem);
                }
            }


            MemoryStream outStream = new MemoryStream();
            binaryFormatter.Serialize(outStream, settings);
            byte[] outBytes = new byte[outStream.Length];
            outStream.Position = 0;
            outStream.Read(outBytes, 0, outBytes.Length);
            File.WriteAllBytes(@"c:\temp\SqlStudio.bin", outBytes);
        }

        private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            Debug.WriteLine(args.Name);
            if (args.Name.StartsWith("SqlWorkbench.Interfaces"))
            {
                return Assembly.LoadFrom(@"C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\SqlWorkbench.Interfaces.dll");
            }
            return Assembly.Load(args.Name);
        }
    }

38
2018-06-16 15:37



Saya mengambil kode dari pos @ arcticdev dan mengubahnya menjadi aplikasi konsol. Ini bisa diunduh sini. aplikasi mengharapkan SqlStudio.bin berada di folder yang sedang dijalankan aplikasi dan akan MENGATASINYA (membuat cadangan !!) dan mengambil nama server sebagai argumen.

Diuji pada Windows 7 (x64) dan SSMS 2008.


5
2017-12-05 15:43



Sayangnya, tampaknya tidak mungkin (atau setidaknya praktis) untuk hanya menghapus barang-barang tertentu.

Namun, jika Anda mau, Anda dapat mengatur ulang konfigurasi dan mulai dari awal.

Pastikan Management Studio ditutup, lalu hapus atau ganti nama file ini:

%APPDATA%\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin

Perhatikan bahwa file itu berisi pengaturan preferensi pengguna lain, jadi jika Anda telah menyesuaikan konfigurasi Manajemen Studio, Anda akan memiliki beberapa pekerjaan untuk mengembalikannya.

Referensi: http://social.msdn.microsoft.com/Forums/en-US/sqltools/thread/94e5c3ca-c76d-48d0-ad96-8348883e8db8/

Semoga berhasil!


3
2018-06-03 17:31