为什么SQL Server实例不会始终显示在枚举中?

时间:2011-09-09 19:10:42

标签: c# sql-server

我正在尝试在我的PC上运行SQL Server实例。

SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance;
DataTable table = instance.GetDataSources();
foreach (DataRow row in table.Rows)
{
   SqlInstanceCollection.Items.Add(row["ServerName"].ToString() + "\\" + row["InstanceName"].ToString());
   SqlInstanceCollection.Text = SqlInstanceCollection.Items[0].ToString();
}

我面临的问题是,即使服务器正在运行,有时我也会得到实例,有时我也没有。

获取运行SQL Server的实例列表需要多长时间?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

来自MSDN的

  

由于SqlDataSourceEnumerator使用的机制的性质   在网络上定位数据源,该方法不会总是返回a   完整的可用服务器列表,列表可能不是   每次通话都一样。如果您打算使用此功能让用户   从列表中选择一个服务器,确保您始终也提供一个服务器   如果是服务器,则键入不在列表中的名称的选项   枚举不会返回所有可用的服务器。此外,   这种方法可能需要很长时间才能执行,所以   在性能至关重要的时候小心调用它。

SqlDataSourceEnumerator.GetDataSources Method

如他们的笔记所述,方法设计不可靠;)奇怪!

编辑:如果我必须解决类似问题,我会尝试使用带有正确参数集的Windows API NetServerEnum。这真的不是微不足道,但应该更可靠。