2012-05-24 50 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 Server实例的SQL Browser服务是浏览。

默认情况下SQL Express没有启用此功能。

参考文献:

Enumerating Instances of SQL Server (ADO.NET)

SQL Server 2000提供了系统内部SqlDataSourceEnumerator信息。但是,SQL Server 2005通过使用名为SQL Browser的外部Windows服务来提供信息。此服务在默认情况下处于启用状态,但管理员可以将其关闭或禁用,从而使服务器实例对此类不可见。该服务仅适用于SQL Server 2005中,并且对2000年

Using SQL Server Browser

默认情况下,SQL Server Browser服务不用于SQL Server Express的启用的SQL Server的行为没有任何影响。 SQL Server Browser可以使用表面区域配置工具 进行初始配置,并使用SQL Server 配置管理器进行管理。

相关问题