2012-05-24 2 views
0

У меня есть код, чтобы найти список SQLServerпрограммно список экземпляров SQL Server

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; 
     } 

это работает хорошо (если найден SQL Server), но, к сожалению, он не может найти SQL Express.

У кого-нибудь есть идея?

Спасибо заранее

ответ

7

Вам необходимо включить службу обозревателя SQL для экземпляра SQL-сервера, чтобы быть доступным для просмотра.

У SQL Express по умолчанию это не включено.

Ссылки:

Enumerating Instances of SQL Server (ADO.NET)

SQL Server 2000 предоставляет информацию для SqlDataSourceEnumerator внутренне. Однако SQL Server 2005 предоставляет информацию с помощью внешней службы Windows с именем SQL Browser. Эта услуга включена по умолчанию, но администраторы могут отключить ее или отключить, что делает экземпляр сервера невидимым для этого класса. Данная услуга относится только к SQL Server 2005, и не оказывает никакого влияния на поведение SQL Server 2000.

Using SQL Server Browser

По умолчанию служба обозревателя SQL Server не включена для SQL Server Express , Сначала можно настроить браузер SQL Server с помощью средства настройки области поверхности и управлять с помощью SQL Server Configuration Manager.

Смежные вопросы