我不时在不同的计算机上遇到同样的问题,但我没有找到任何解释。看起来问题与防火墙、UDP 数据包和本地计算机上的 SQL Server Browser 服务有关(AFAIK,SmoApplication.EnumAvailableSqlServers
即使对于本地实例也使用 SQL Server Browser,而 SQL Server Browser 反过来使用广播数据包来发现 SQL Server 服务。
我实施的解决方法使用ManagedComputer
了 SMO 中的类:
private const String defaultMsSqlInstanceName = "MSSQLSERVER";
public String[] GetLocalSqlServerInstances()
{
return new ManagedComputer()
.ServerInstances
.Cast<ServerInstance>()
.Select(instance => String.IsNullOrEmpty(instance.Name) || instance.Name == defaultMsSqlInstanceName ?
instance.Parent.Name : Path.Combine(instance.Parent.Name, instance.Name))
.ToArray();
}
此外,它的工作速度比SmoApplication.EnumAvailableSqlServers(true)
.
希望这可以帮助。