2012-05-24 54 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 配置管理器進行管理。

相關問題