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

use*_*511 0 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;
        }
Run Code Online (Sandbox Code Playgroud)

它工作正常(如果找到SQL Server),但遗憾的是它无法找到sql Express.

有谁有想法?

提前谢谢你

dwe*_*ner 7

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

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

参考文献:

枚举SQL Server实例(ADO.NET)

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

使用SQL Server Browser

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