2012-12-03 12 views
5

पर निर्भर करता है मैं फ्रेमवर्क 4.0 और SQL सर्वर 2008 R2 के साथ C# का उपयोग कर रहा हूं। मैं इस कोड के साथ एसक्यूएल सर्वर 2008 को सूचीबद्ध किया है:डेटाबेस की सूची प्राप्त करें चयनित सर्वर

public static string[] GetSQLServerList() 
     { 
      SqlDataSourceEnumerator dse = SqlDataSourceEnumerator.Instance; 
      DataTable dt = dse.GetDataSources(); 
      if (dt.Rows.Count == 0) 
      { 
       return null; 
      } 

      string[] SQLServers = new string[dt.Rows.Count]; 
      int f = -1; 
      foreach (DataRow r in dt.Rows) 
      { 
       string SQLServer = r["ServerName"].ToString(); 
       string Instance = r["InstanceName"].ToString(); 
       if (Instance != null && !string.IsNullOrEmpty(Instance)) 
       { 
        SQLServer += "\\" + Instance; 
       } 
       SQLServers[System.Math.Max(System.Threading.Interlocked.Increment(ref f), f - 1)] = SQLServer; 
      } 
      Array.Sort(SQLServers); 
      return SQLServers; 
     } 

मैं ComboBox पर अपने सर्वर सूचीबद्ध।

मैं डेटाबेस कैसे सूचीबद्ध कर सकता हूं, इस बात पर निर्भर करता है कि मैं किस कॉम्बोबॉक्स में चुनता हूं?

मुझे यह tutorial मिला, लेकिन इसे sqlconnection की आवश्यकता है, जब मैं सर्वर नहीं चुना है तो मैं कैसे कनेक्ट कर सकता हूं?

+0

क्या 'SQLServers के बीच का अंतर है:

List<String> ServerNames = new List<String>(); SqlDataSourceEnumerator servers = SqlDataSourceEnumerator.Instance; DataTable serversTable = servers.GetDataSources(); foreach (DataRow row in serversTable.Rows) { string serverName = row[0].ToString(); try { if (row[1].ToString() != "") { serverName += "\\" + row[1].ToString(); } } catch { } ServerNames.Add(serverName); } 

चयनित सर्वर से डेटाबेस की एक सूची प्राप्त करने के लिए [System.Math.Max ​​(System.Threading.Interlocked.Increment (ref f), f-1)] = SQLServer; ' और ' sqlServers [++ f] = sqlServer; ' इस विधि में? –

उत्तर

13

इस तरह आप नेटवर्क पर सर्वर नाम की एक सूची प्राप्त है:

List<String> databases = new List<String>(); 

SqlConnectionStringBuilder connection = new SqlConnectionStringBuilder(); 

connection.DataSource = SelectedServer; 
// enter credentials if you want 
//connection.UserID = //get username; 
// connection.Password = //get password; 
connection.IntegratedSecurity = true; 

String strConn = connection.ToString(); 

//create connection 
    SqlConnection sqlConn = new SqlConnection(strConn); 

//open connection 
sqlConn.Open(); 

//get databases 
DataTable tblDatabases = sqlConn.GetSchema("Databases"); 

//close connection 
sqlConn.Close(); 

//add to list 
foreach (DataRow row in tblDatabases.Rows) { 
     String strDatabaseName = row["database_name"].ToString(); 

     databases.Add(strDatabaseName); 


}  
+0

धन्यवाद, लेकिन मैं इस सर्वर से डेटाबेस कैसे प्राप्त कर सकता हूं नाम – user609511

+0

@ user609511: आपको अपने डेटाबेस प्राप्त करने के लिए प्रत्येक सर्वर से कनेक्ट करना होगा। –

+0

उदाहरण से कनेक्ट करें, डेटाबेस 'मास्टर', और' sp_databases' निष्पादित करें http://msdn.microsoft.com/en-us/library/ms176070.aspx – tomfanning

1
using (var connection = new System.Data.SqlClient.SqlConnection("ConnectionString")) 
    { 
     connection.Open(); 
     var command = new System.Data.SqlClient.SqlCommand(); 
     command.Connection = connection; 
     command.CommandType = CommandType.Text; 
     command.CommandText = "SELECT name FROM master.sys.databases"; 

     var adapter = new System.Data.SqlClient.SqlDataAdapter(command); 
     var dataset = new DataSet(); 
     adapter.Fill(dataset); 
     DataTable dtDatabases = dataset.Tables[0]; 
    }