我正在尝试查找本地系统上安装的所有SQL实例。我有一个有效的解决方案,但它没有返回一致的结果。
下面工作但它不一致,有时它在第一次通话时起作用。有时我不得不多次拨打getSqlInstances()
。
public static DataTable getSqlInstances()
{
DataTable instances = SmoApplication.EnumAvailableSqlServers(true);
return instances;
}
下面我发现其他地方(我相信另一个Stackoverflow帖子)作为Microsoft的推荐,我无法让它返回任何结果。
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实例,而不仅仅是localhost。
编辑:
我应该先查看,但最后一次更新与之前尝试过的方法几乎完全相同。也许我当时没有加入网络?