2011-05-23 43 views
5

我将尝试使用下面的代码,以争取所有的SQL Server实例(本地和网络)的组合框:C#:与SqlDataSourceEnumerator.Instance.GetDataSources()问题

 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()); 
     } 

它工作正常的Windows XP 32位,Windows 7 64位,通过组合所有本地和网络SQL服务器实例,但是当这段代码在Windows 7 32位(所有专业版)上运行时,需要很长时间才能获取实例详细信息并最终即使只有一个实例(我相信由于某种TimeOut)也无法登记。在这种情况下,数据表甚至没有一行。因此,我想问以下问题:

  1. 这个问题是平台特定的还是操作系统特定的?

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

  3. 是否有任何的替代品这一要求是不平台或框架依赖作为

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

    是framewrok相关的。

我得到至少17-20网络服务器的SQL Server,我期望这个函数返回。因此我无法理解这会发生什么?我正好在Windows 7 32bit(专业版)上遇到这个问题。

谢谢

与Hemant Jaiswal

回答

1

此问题是 '网络专用',而不是 'OS' 或 '平台'。根据机器的网络设置,网络配置,防火墙等,它可能无法工作。 此功能以其不稳定性而闻名,它也可以跳过某些服务器(即使服务器列表不为空)。所以,我的建议是检查机器的网络/防火墙设置。