以编程方式列出SQL Server的实例

时间:2012-05-24 08:38:53

标签: c# sql-server

我有代码来查找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。

有人有想法吗?

提前谢谢你

1 个答案:

答案 0 :(得分:7)

您需要启用SQL浏览器服务以使SQL服务器实例可浏览。

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

参考文献:

Enumerating Instances of SQL Server (ADO.NET)

  

SQL Server 2000在内部提供SqlDataSourceEnumerator的信息。但是,SQL Server 2005通过使用名为SQL Browser的外部Windows服务提供信息。默认情况下启用此服务,但管理员可以将其关闭或禁用它,使服务器实例对此类不可见。此服务仅适用于SQL Server 2005,并且对SQL Server 2000的行为没有影响。

Using SQL Server Browser

  

默认情况下,SQL未启用SQL Server Browser服务   Server Express。 SQL Server Browser最初可以使用配置   Surface Area Configuration Tool并使用SQL Server进行管理   配置管理器。