0

我有代码来查找 sqlserver 列表

 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。

有人有想法吗?

提前谢谢你

4

1 回答 1

7

您需要启用 SQL Browser 服务才能使 SQL Server 实例可浏览。

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

参考:

枚举 SQL Server (ADO.NET) 的实例

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

使用 SQL Server 浏览器

默认情况下,没有为 SQL Server Express 启用 SQL Server Browser 服务。SQL Server Browser 最初可以使用外围应用配置工具进行配置,并使用 SQL Server 配置管理器进行管理。

于 2012-05-24T08:46:54.493 回答