我正在尝试查找安装在本地系统上的所有 SQL 实例。我有一个可行的解决方案,但是它没有返回一致的结果。
下面的工作但它并不一致,有时它在第一次调用时工作。有时我不得不getSqlInstances()
多次打电话。
public static DataTable getSqlInstances()
{
DataTable instances = SmoApplication.EnumAvailableSqlServers(true);
return instances;
}
下面我在其他地方找到了(我相信另一个 Stackoverflow 帖子)作为微软的推荐,我无法让它返回任何结果。
public static DataTable getSqlInstances()
{
System.Data.Sql.SqlDataSourceEnumerator instances =
System.Data.Sql.SqlDataSourceEnumerator.Instance;
DataTable dataTable = instances.GetDataSources();
return dataTable;
}
有什么想法吗?
更新:我发现下面的作品,虽然不是 100% 一致,但它比使用更一致SmoApplication.EnumAvailableSqlServers(true)
public static DataTable GetSqlInstances()
{
DataTable instances = SqlDataSourceEnumerator.Instance.GetDataSources();
return instances;
}
它返回整个网络中的所有 SQL 实例,而不仅仅是本地主机。
编辑:
我应该先看看,但最后一次更新与我之前尝试过的方法几乎相同,之前根本不起作用。也许我当时没有连接到网络?