2010-08-25 11 views
28

यह एक काफी आम प्रश्न प्रतीत होता है, लेकिन मैंने जो जवाब देखा है, वह विशेष रूप से संतोषजनक नहीं रहा है। मैं स्थानीय मशीन पर स्थापित एमएस एसक्यूएल सर्वर इंस्टेंस के नामों की एक सूची प्राप्त करना चाहता हूं, भले ही वे शुरू हो या नहीं। इस चर्चा के प्रयोजनों के लिए, मैं केवल SQL 2005 और नए के उदाहरण ढूंढने के साथ ठीक हूं; मैं 2000 और पहले "विरासत" विधियों का उपयोग कर संभाल सकता हूं (यानी, रजिस्ट्री में देखें)। मुझे जो चाहिए वह यह है कि यह SQL सर्वर ब्राउज़र सेवा (यह आजकल डिफ़ॉल्ट रूप से अक्षम है) पर निर्भर नहीं है, और 64-बिट उदाहरण तब भी लौटाए जाते हैं जब ऐप 32-बिट होता है।स्थानीय मशीन पर सभी एमएस एसक्यूएल सर्वर उदाहरणों की सूची कैसे प्राप्त करें?

सुझाव मैंने देखा है:

  • रजिस्ट्री के माध्यम से खुदाई: माना जाता है गैर-दस्तावेजी जा रहा है रजिस्ट्री प्रविष्टियाँ की वजह से Not recommended; एमएस भविष्य में उन्हें बदल सकता है। सबसे महत्वपूर्ण बात यह है कि, जहां तक ​​मैं कह सकता हूं, एमएसएसक्यूएल के 64-बिट उदाहरण 64-बिट एचकेएलएम \ सॉफ़्टवेयर \ माइक्रोसॉफ्ट \ माइक्रोसॉफ्ट एसक्यूएल सर्वर स्थापित किए गए इंस्टेंस में जाते हैं, और 32-बिट उदाहरण 32-बिट में जाते हैं, इसलिए 32- बिट ऐप को 64-बिट उदाहरण नहीं दिखाई देंगे।

  • पिछले ब्लॉग पोस्ट में उल्लिखित SQL WMI Provider for Configuration Management का उपयोग करें। यह सबसे नज़दीक प्रतीत होता है, लेकिन लेखक की सलाह के बावजूद रजिस्ट्री का उपयोग करने से बचने के लिए, क्योंकि यह बदल सकता है, यह SQL 2005 और 2008 के बीच डब्लूएमआई नेमस्पेस बदल गया: 2005 में, यह मूल \ Microsoft \ SqlServer \ ComputerManagement है, लेकिन 2008 में यह मूल \ Microsoft \ SqlServer \ ComputerManagement10 है। क्या यह भविष्य में फिर से बदल जाएगा? उस ने कहा, अगर मुझे एसक्यूएल के भविष्य के संस्करण के लिए अपना ऐप अपडेट करना है तो शायद यह एक बड़ा मुद्दा नहीं है।

    डब्लूएमआई विधि के साथ मेरी समस्या यह है कि एसक्लस सर्विस क्लास सेवा नामों की एक सूची देता है, जबकि मुझे इंस्टेंस नाम चाहिए। उदाहरण के लिए, एमएसएसक्यूएल $ इंस्टेंस के बजाय, मैं बस इंस्टेंस करना चाहता हूं। "MSSQL $" को अलग करना डिफ़ॉल्ट है, क्योंकि डिफ़ॉल्ट उदाहरण के विशेष मामले को संभालना है, लेकिन क्या यह विश्वसनीय है? AFAIK, तकनीकी रूप से कोई कारण नहीं है कि सेवा का नाम बदला नहीं जा सका, जबकि इंस्टेंस नाम को वही रखा गया। उस ने कहा, जब तक कि किसी के पास कोई बेहतर तरीका न हो, मुझे लगता है कि मैं इसके साथ जाऊंगा (सेवा के नाम प्राप्त करें और एमएसएसक्यूएल $ को बंद कर दें)। ServerSettings क्लास इंस्टेंस नाम देता है, लेकिन यह मेरी मशीन पर स्थापित SQL 2008 R2 एक्सप्रेस का 64-बिट उदाहरण नहीं देखता है।

  • SmoApplication.EnumAvailableSqlServers(true) का उपयोग करें: यह SQL सर्वर ब्राउज़र सेवा पर निर्भर करता है। ब्राउज़र सेवा शुरू होने पर यह बहुत अच्छा काम करता है, लेकिन यदि ऐसा नहीं है, तो मुझे कंप्यूटर नाम के साथ सर्वर नाम और रिक्त उदाहरण नाम के रूप में एक पंक्ति मिलती है।

  • System.Data.Sql.SqlDataSourceEnumerator.GetDataSources() का उपयोग करें: एक ही समस्या यह है कि यह SQL सर्वर ब्राउज़र पर निर्भर करता है।

तो, क्या कुछ अन्य विधियां बेहतर काम कर सकती हैं?

+0

ध्यान रखें कि Windows Server 2012 और Windows 8 पर, SQL Server 2008 R2 के उदाहरणों का पता लगाने के लिए WMI का उपयोग विफल हो सकता है यदि यह सर्विस पैक 2 (SQL Server 2008 R2 10.50.4000, सर्विस पैक 2) में अपडेट नहीं किया गया है । यह मॉड्यूल svrenumapi100.dll में विफल रहता है, wmiprvse.exe – demp

उत्तर

11

मैं PowerShell का उपयोग अपने लैपटॉप पर दोनों 2005 और 2008 एसक्यूएल सर्वर उदाहरणों को देखने के लिए कर रहा हूँ:

Get-Service | Where-Object {$_.Name -like 'MSSQL$*'} 

अन्य संभावनाओं RegisteredServers नाम स्थान के माध्यम से गणना में शामिल हैं पता लगाने के लिए।

+1

हम्म द्वारा उपयोग किया जाता है, क्या यह विश्वसनीय है? यही है, क्या यह गारंटी है कि एमएसएसएलएल का डिस्प्लेनाम हमेशा "एसक्यूएल सर्वर (" से शुरू होगा? मैं स्थानीय संस्करणों के बारे में सोच रहा हूं - एकमात्र गैर-अंग्रेजी संस्करण जिसे मैंने स्थापित किया है फ्रेंच है, और यह ठीक है। हालांकि, कुछ अन्य एसक्यूएल से संबंधित सेवा डिस्प्ले नाम _are_ स्थानीयकृत (उदाहरण के लिए, "एसक्यूएल सर्वर एजेंट (इंस्टेंस)" फ्रेंच में एजेंट एसक्यूएल सर्वर (इंस्टेंस) "है), मुझे विश्वास नहीं है कि कुछ ऐसी भाषा नहीं है जहां एमएसएसएलएल का डिस्प्लेनाम" एसक्यूएल सर्वर ("ऐसा लगता है कि" MSSQL $ "से शुरू होने वाले सेवा नाम की तलाश करना इस विधि से अधिक विश्वसनीय है। –

+0

यह एक उचित सवाल है। मैंने केवल 'MSSQL $ *' जैसे नाम की खोज करने के लिए उत्तर समायोजित किया है (जो भी मेरे कंप्यूटर पर सही परिणाम देता है) हालांकि मुझे यकीन नहीं है कि यह विभिन्न क्षेत्र सेटिंग्स पर कैसे दिखाई देगा। – 8kb

+2

डिफ़ॉल्ट उदाहरण के लिए काम नहीं करता है जिसे 'MSSQLSERVER' कहा जाता है (यानी 'MSSQL $' से शुरू नहीं होता है) –

1

तो यह उपयोगी हो सकता है, मैं इस Sql सर्वर 2008 में की कोशिश की है:

select * from sys.servers 
+1

डाटाबेस की सूची दिखाता है से सर्वर से जुड़े सर्वर जो आपने उस क्वेरी को निष्पादित किया था। कुछ लिंक किए गए सर्वर अन्य कंप्यूटरों पर हो सकते हैं, या हो सकता है कि वे एमएसएसक्यूएल भी न हों (आप ओडीबीसी डेटा स्रोत, या एक्सेस डेटाबेस, आदि से लिंक कर सकते हैं ...)। साथ ही, यह अन्य एमएसएसक्यूएल उदाहरणों को दिखाने के लिए नहीं है जो एक ही मशीन पर हैं, जब तक कि किसी ने स्पष्ट रूप से उन्हें लिंक नहीं किया हो। सवाल यह है कि स्थापित एमएसएसक्यूएल उदाहरणों की सूची कैसे प्राप्त करें, इसलिए यह आवश्यक है कि आप पहले से ही एक उदाहरण के बारे में जानते हों, और इसके साथ कनेक्ट करने के लिए प्रमाण-पत्र भी हैं, काम नहीं करेगा। –

2

मैं जानता हूँ कि यह एक पुराने पोस्ट है, लेकिन मैं आज इस पोस्ट के लिए आया था की स्थापित उदाहरणों को खोजने के लिए एक रास्ता तलाश एस क्यू एल सर्वर।हालांकि दिए गए दो उत्तर उपयोगी हैं, मुझे लगता है कि वे केवल स्थापित किए गए हैं और SQL Server के चल रहे हैं। यदि SQL सर्वर कॉन्फ़िगरेशन प्रबंधक स्थापित है, तो सभी स्थापित इंस्टॉलेशन SQL सर्वर सेवा नोड के अंतर्गत सूचीबद्ध होना चाहिए। यहां आपको एक इंस्टेंस मिल सकता है जो इंस्टॉल है, लेकिन नहीं चल रहा है। आप इंस्टेंस पर राइट क्लिक कर सकते हैं और इसे शुरू कर सकते हैं। मुझे यकीन है कि ऐसा करने के अन्य तरीके हैं; यह एक ऐसा तरीका है जो आज मेरे लिए आसान था और मैंने सोचा कि मैं इसे साझा करूंगा।

+0

विंडोज सेवा चला रहा है और SQL सर्वर सेवाओं को ढूंढना एक विकल्प है यदि आपके पास कॉन्फ़िगरेशन प्रबंधक स्थापित नहीं है – Mubarek

4

एक कमांड प्रॉम्प्ट (cmd.exe) से:

sc query|findstr "DISPLAY_NAME"|findstr /C:"SQL Server (" > myfile.txt 

FOR /F " tokens=2 delims=()" %i in (myfile.txt) do @echo %computername%\%i 
0

एसक्यूएल ब्राउज़र सेवा (अगर सक्रिय हो) UDP पोर्ट पर SSRP/MS-SQLR बोलती 1434

यह घटक जिसके लिए इस्तेमाल किया जाता है उदाहरणों की दूरस्थ खोज (और उनके बंदरगाह का निर्धारण भी)। यह नेटवर्क में भी खोज में मदद करता है।

हालांकि यह डिफ़ॉल्ट रूप से अक्षम है (सतह में कमी के लिए अच्छी चीज)।

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