1

我正在尝试查找安装在本地系统上的所有 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 实例,而不仅仅是本地主机。

编辑:

我应该先看看,但最后一次更新与我之前尝试过的方法几乎相同,之前根本不起作用。也许我当时没有连接到网络?

4

0 回答 0