我有代码来查找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。
有人有想法吗?
提前谢谢你
答案 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的行为没有影响。
默认情况下,SQL未启用SQL Server Browser服务 Server Express。 SQL Server Browser最初可以使用配置 Surface Area Configuration Tool并使用SQL Server进行管理 配置管理器。