2009-10-23 5 views
5

SQL सर्वर (मानक संस्करण) स्थापित होने पर कोड के माध्यम से सर्वर नाम कैसे प्राप्त करें।यदि SQL सर्वर (मानक संस्करण) स्थापित है, तो कोड के माध्यम से सर्वर का नाम कैसे प्राप्त करें

SQL सर्वर कनेक्ट करने के लिए कनेक्शन स्ट्रिंग बनाने के दौरान हम सर्वर का नाम पास करते हैं। क्या हम कोड के माध्यम से इस मूल्य को पुनः प्राप्त कर सकते हैं?

string sqlConnectionString = string.Format(
"user id={0};password={1};server={2};Trusted_Connection=no;database=TestDB; 
connection timeout={3}", 
dirDBinfo.UserName, dirDBinfo.Password, "ServerName", dirDBinfo.TimeOut); 

उत्तर

8

मुझे यकीन नहीं है कि मैं समझता हूं कि आप क्या चाहते हैं।

आप पहले से ही एक कनेक्शन स्ट्रिंग है, और आप अन्यत्र उपयोग के लिए इसे से सर्वर नाम निकालने के लिए कोशिश कर रहे हैं, तो आप यह इतना तरह रिवर्स इंजीनियर कर सकते हैं:

var parser = new SqlConnectionStringBuilder(connectionString); 
var serverName = parser.DataSource; 

आप अपने कनेक्शन स्ट्रिंग का निर्माण कर रहे हैं पहली बार है, तो के लिए:

  1. आप जानते हैं कि आप मशीन है कि आपके ग्राहक कोड पर निष्पादित हो रहा है पर SQL सर्वर से कनेक्ट करना चाहते हैं, तो बस सर्वर नाम के लिए (local) का उपयोग करें। यदि SQL सर्वर का आवृत्ति नाम है, तो इसे इस तरह निर्दिष्ट करें: (local)\myinstancename
  2. यदि आप पहले से नहीं जानते कि किस सर्वर से कनेक्ट होना है, तो यह कहीं और जानकारी प्राप्त करने के लिए आप पर निर्भर है।
+1

मैं सहमत हूं - ऐसा लगता है कि आशीष एप्लिकेशन को यह अनुमान लगाने की कोशिश कर रहा है कि कौन सा सर्वर उपयोग करना है, जो यह बस नहीं कर सकता है। '(स्थानीय) 'के माध्यम से डिफ़ॉल्ट स्थानीय उदाहरण चुनने के अलावा, एकमात्र अन्य समझदार विकल्प है कि सर्वर का उपयोग करने के लिए कोड को टैल करना है। आप यह कैसे करते हैं आप पर निर्भर करता है। –

0

क्या स्थानीय कंप्यूटर पर सर्वर है?
यदि ऐसा है, तो सर्वर का नाम localhost पर सेट करें।
यदि नहीं, use SqlDataSourceEnumerator


इसके अलावा, बजाय String.Format का उपयोग कर एक कनेक्शन स्ट्रिंग के निर्माण के लिए, आप एक SqlConnectionStringBuilder उपयोग करना चाहिए। यह अर्धविराम के साथ मूल्यों को संभालेगा।

उदाहरण के लिए:

var builder = new SqlConnectionStringBuilder(); 

builder.UserID = dirDBinfo.UserName; 
builder.Password = dirDBinfo.Password; 
builder.Server= "localhost"; 
builder.UserID = dirDBinfo.UserName; 
builder["Trusted_Connection"] = "no"; 
builder.Database = "TestDB" 
builder.ConnectTimeout = dirDBinfo.TimeOut; 
+1

लोकलहोस्ट केवल तभी काम करता है जब यह नामित उदाहरण –

0

तुम सिर्फ इस संबंध के खिलाफ नहीं चलाया जा सकता का चयन करें @@ SERVERNAME?

+0

नहीं है; वह एक कनेक्शन स्ट्रिंग बनाने की कोशिश कर रहा है। – SLaks

+1

तो हम अभी भी हमारी कनेक्शन स्ट्रिंग का निर्माण कर रहे हैं? इस मामले में तर्क क्या है जो निर्धारित करता है कि कौन सा SQL सर्वर चुनना है? यदि यह स्थानीय है, तो जैसा आपने कहा - बस स्थानीयहोस्ट का उपयोग करें। लेकिन मैंने सोचा कि हमारे पास पहले से ही सर्वर का नाम पास हो चुका है और अब हमें कोड में इसे किसी भी तरह से पुनर्प्राप्त करने की आवश्यकता है ... – DmitryK

+0

जैसा कि मैं सवाल समझता हूं, यही वह पूछ रहा है। – SLaks

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