C#:SqlDataSourceEnumerator.Instance.GetDataSources()问题

Hem*_*wal 5 c#

我试图通过使用以下代码在ComboBox中登记所有SQL Server实例(本地和网络):

        DataTable dt = null;
        dt = System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources();
        foreach (DataRow dr in dt.Rows)
        {
          ComboBox1.Items.Add(dr[0].ToString() + "\\" + dr[1].ToString());
        }
Run Code Online (Sandbox Code Playgroud)

通过在组合中登记我的所有本地和网络sql server实例,它在Windows XP 32位,Windows 7 64位上运行正常,但是当这段代码在Windows 7 32位(所有专业版)上运行时,需要很长时间才能获取实例细节,最终甚至无法招募单个实例(我相信由于某种TimeOut).在这种情况下,数据表甚至没有一行.因此,我想问以下问题:

  1. 此问题是特定于平台还是特定于操作系统?

  2. 这真的是由于网络速度慢/大没有.网络上的服务器实例?

  3. 是否有任何替代此要求,而不是平台或框架依赖

    SmoApplication.EnumAvailableSqlServers(假); //本地和网络SQL实例

    是framewrok依赖.

我有至少17-20的SQL Server网络服务器,我希望这个功能返回.因此我无法理解这是怎么发生的?我在Windows 7 32位(专业版)上遇到了这个问题.

谢谢

Hemant Jaiswal

Pet*_*lin 1

这个问题更多的是“网络特定”而不是“操作系统”或“平台”。它可能工作或不工作,具体取决于机器的网络设置、网络配置、防火墙等。此功能以其不稳定而闻名,它还可以跳过某些服务器(即使服务器列表不为空)。因此,我的建议是检查机器的网络/防火墙设置。