2011-06-03 16 views
32

संभव डुप्लिकेट:
How to remove “Server name” items from history of SQL Server Management StudioSQL सर्वर प्रबंधन स्टूडियो के "सर्वर से कनेक्ट करें" स्क्रीन में सर्वर प्रविष्टियों को कैसे हटाएं?

"सर्वर से कनेक्ट" स्क्रीन में, SQL सर्वर प्रबंधन स्टूडियो भंडार सभी प्रविष्टियों क्या तुमने कभी सर्वर नाम, लॉगिन और पासवर्ड के लिए प्रवेश किया है। यह बहुत उपयोगी है, लेकिन समय-समय पर चीजें बदलती हैं, सर्वर बदलते हैं, डेटाबेस अब उपलब्ध नहीं होते हैं।

मैं इस स्क्रीन से सर्वर प्रविष्टियों को कैसे हटा सकता हूं? साथ ही, जब आप कोई सर्वर चुनते हैं, तो पिछले लॉग इन सूची में उपलब्ध हैं। एक बार फिर, ये परिवर्तन। मैं उपयोगकर्ता प्रविष्टियों को कैसे हटा सकता हूं?

Connect to Server screen

उत्तर

3

दुर्भाग्य से, यह करने के लिए संभव (या कम से कम व्यावहारिक) होने के लिए प्रकट नहीं होता है केवल कुछ वस्तुओं को हटा दें।

हालांकि, अगर आप चाहते हैं, तो आप कॉन्फ़िगरेशन को रीसेट कर सकते हैं और स्क्रैच से शुरू कर सकते हैं।

सुनिश्चित करें प्रबंधन स्टूडियो बंद कर दिया है, तो हटा सकते हैं या इस फ़ाइल का नाम बदलें:

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

ध्यान दें कि उस फ़ाइल अन्य उपयोगकर्ता वरीयता सेटिंग, इसलिए यदि आप अपने प्रबंधन स्टूडियो विन्यास कस्टमाइज़ कर दिया है शामिल है, तो आपको कुछ उन्हें बहाल करने के लिए काम करते हैं।

संदर्भ: http://social.msdn.microsoft.com/Forums/en-US/sqltools/thread/94e5c3ca-c76d-48d0-ad96-8348883e8db8/

गुड लक!

+1

माइक्रोसॉफ्ट ने इसे एक्सएमएल फाइल नहीं बनाया है? वह कितना मुश्किल होगा? :( ठीक है, क्योंकि मैं * हर * अनुकूलन और * सभी * आइटम खो दूंगा, मुझे लगता है कि मैं इसे और भी –

+0

हाँ, डूबना नहीं चाहता हूं। मैंने SqlStudio.bin के प्रारूप/संपादन पर जानकारी की तलाश की , लेकिन कुछ भी नहीं मिला। हां। –

+1

इस प्रश्न के भविष्य के संदर्भों के लिए, मैंने आपका जवाब संपादित किया ताकि पाठक आगे जानता है कि यह नहीं किया जा सकता है, फिर वैकल्पिक समाधान प्रदान करता है। और फिर मैंने इसे स्वीकार कर लिया। –

38

ऐसा लगता है कि इस फाइल, संस्करण = 10.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = 89845dcd8080cc91 विधानसभा (ग पर स्थित Microsoft.SqlServer.Management.UserSettings.SqlStudio वर्ग Microsoft.SqlServer.Management.UserSettings में परिभाषित के एक द्विआधारी धारावाहिक संस्करण है: \ प्रोग्राम फ़ाइलें \ Microsoft SQL Server \ 100 \ उपकरण \ Binn \ VSShell \ Common7 \ IDE \ Microsoft.SqlServer.Management.UserSettings.dll)।

कुछ विकास कौशल (विजुअल स्टूडियो या यहां तक ​​कि पावरहेल) के साथ आप इस फ़ाइल को मूल कक्षा में deserialize कर सकते हैं, उन प्रविष्टियों को ढूंढें जिन्हें आप निकालना चाहते हैं और फ़ाइल को फिर से क्रमबद्ध करना चाहते हैं।

यह आपको विचार (.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); 

एड्रियन सवाल के बाद, मैं यह फिर से एक Win7 x64 बॉक्स पर विजुअल स्टूडियो 2010 मैं उपयोग करने की कोशिश एक ही त्रुटि मिली, इसलिए थोड़ा सा खोदने के बाद मुझे पता चला कि इसे हल करने के लिए कई कदम उठाए गए हैं। \ Program Files \ Microsoft SQL सर्वर:

  1. परियोजना संपत्तियों में '86' के लिए मंच लक्ष्य निर्धारित करें
  2. Microsoft.SqlServer.Management.SDK.SqlStudio के लिए एक संदर्भ जोड़ने (मेरी बॉक्स पर इस सी में था \ 100 \ टूल्स \ Binn \ VSShell \ Common7 \ IDE \ Microsoft.SqlServer.Management.Sdk.SqlStudio.dll)
  3. Microsoft.SqlServer.Management का संदर्भ जोड़ें।(पिछले एक पर एक ही निर्देशिका में) UserSettings
  4. कस्टम विधानसभा संकल्प प्रदर्शन के बाद यह स्पष्ट नहीं था

कस्टम विधानसभा संकल्प करने का एक सा लिया (मेरे लिए, कम से कम) क्यों CLR wouldn असेंबली को सही तरीके से हल नहीं करें और क्यों विजुअल स्टूडियो मुझे मैन्युअल रूप से संदर्भ जोड़ने की अनुमति नहीं देगा। मैं SqlWorkbench.Interfaces.dll के बारे में बात कर रहा हूँ।

अपडेट किए गए कोड इस तरह दिखता है:

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); 
     } 
    } 
+0

यह शुद्ध सोना है! मैं मैं कुछ परीक्षण चला रहा हूं और यह आश्चर्यजनक है! मैं आपको अपने विकास पर तैनात रखूंगा ... –

+1

'बाइनरीफॉर्मेटर। सरलीकृत (आउटस्ट्रीम, सेटिंग्स); 'अपवाद फेंकता है:' टाइप करें 'सिस्टम। रनटाइम। सरलीकरण। टाइप करेंलोड अपवाद' विधानसभा में ' mscorlib, वी rsion = 4.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = b77a5c561934e089 'को serializable के रूप में चिह्नित नहीं किया गया है।' क्या आप जानते हैं कि मैं इसे वापस एक बिन फ़ाइल में कैसे क्रमबद्ध कर सकता हूं? –

+0

बहुत बहुत धन्यवाद। एक जादू की तरह काम किया। – Beniamin

5

मैं @ arcticdev की पोस्ट से कोड लिया और यह एक सांत्वना अनुप्रयोग में बदल गया। इसे here डाउनलोड किया जा सकता है। ऐप SqlStudio.bin को में चल रहा फ़ोल्डर में रहने के लिए उम्मीद करता है और इसे ओवरराइट करें (बैक अप करें !!) और सर्वर का नाम तर्क के रूप में लेता है।

विंडोज 7 (x64) और एसएसएमएस 2008 पर परीक्षण किया गया।

संबंधित मुद्दे