2008-08-22 11 views
6

मैं विभिन्न सर्वरों को मतदान करने का तरीका ढूंढ रहा हूं और जांचता हूं कि SQL सर्वर ऊपर और चल रहा है। मैं अपना कोड सी # में लिख रहा हूं। मैं विशेष रूप से व्यक्तिगत डेटाबेस की परवाह नहीं करता, बस SQL ​​सर्वर चल रहा है और उत्तरदायी है।पता लगाना कि क्या SQL सर्वर चल रहा है

कोई विचार?

उत्तर

5

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

अधिक सुरुचिपूर्ण (लेकिन अधिक कठिन ... हमेशा यह तरीका नहीं है?) समाधान दूरस्थ मशीन से कनेक्ट करने के लिए डब्ल्यूएमआई का उपयोग करना होगा और पता लगाएं कि SQL सर्वर प्रक्रिया चल रही है या नहीं।

+0

ummm .. ब्रूट फोर्स सॉल्यूशन पर एक पॉक समायोजित कर सकते हैं, आपको बता सकते हैं फ्रेमवर्क 4 में कनेक्शन की एक सूची थी, आप foreach.parallel के बारे में सोच सकते हैं और उपज के परिणाम async के लिए प्रतीक्षा करें। अभी भी पर्फ मुद्दों डैनी देखते हैं? मैं बस यह देखने की कोशिश कर रहा हूं कि समांतर सामान कहां समझता है ... – Perpetualcoder

+0

सटीक होने के लिए कनेक्शन स्ट्रिंग की सूची – Perpetualcoder

+0

?? शायद मुझे कुछ याद आया, लेकिन मैं उस बिंदु को नहीं देख रहा हूं जिसे आप बनाने की कोशिश कर रहे हैं। – TheSmurf

2

किसी दिए गए आईपी पते पर टीसीपी में कनेक्ट होने वाला सामान्य कार्य बनाने के लिए TCPClient Class का उपयोग करें।

फिर सर्वर आप परीक्षण करना चाहते की सूची पर पुनरावृति और बंदरगाह 1433

2

से कनेक्शन को खोलने के लिए आप विशिष्ट सर्वर की जरूरत है, WMI का उपयोग करते हैं की कोशिश करो। तुम सिर्फ सभी उपलब्ध सर्वर चाहते हैं:

http://support.microsoft.com/kb/q287737/

+0

यह मेरा अंतिम समाधान था। धन्यवाद! –

0

मैं निश्चित रूप से विन्सेंट जवाब के साथ जाना होगा। बस पूरी तरह से सुनिश्चित करें कि आप टीसीपी कनेक्शन को ठीक से बंद कर रहे हैं और डिस्पोजेक्ट कर रहे हैं। डब्लूएमआई मेरे लिए थोड़ा अधिक लगता है अगर वह सब कुछ है जिसके बाद आप हैं।

2

System.Data.Sql.SqlDataSourceEnumerator वर्तमान में चल रहे SQL सर्वर के सभी उदाहरण लौटाएगा।
MSDN Link

+0

मुझे वही परिणाम मिलते हैं जब मैं 6 में से SQLDMO कोड 3 का उपयोग करता हूं। –

2

SqlDataSourceEnumerator आपको सभी उदाहरण देता है लेकिन वे आवश्यक रूप से चल रहे नहीं हैं। एसक्यूएल के स्थानीय उदाहरणों के लिए, आप ServiceController ऑब्जेक्ट, नेमस्पेस सिस्टम.ServiceProcess का उपयोग कर सकते हैं। सेवा का नाम SqlDataSourceEnumerator से "MSSQL $" और "InstanceName" का संयोजन है। ServiceController ऑब्जेक्ट की ServiceName प्रॉपर्टी सेट करें, और आप "स्टेटस" प्रॉपर्टी - स्टॉप, रनिंग, पेंड इत्यादि की जांच कर सकते हैं। इसलिए, आप "रनिंग" को

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