为什么SQL Server实例总是显示在枚举中?

本文关键字:枚举 显示 SQL Server 实例 为什么 | 更新日期: 2023-09-27 18:08:13

我正试图获得SQL Server实例(s)在我的PC上运行。

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的实例列表?

为什么SQL Server实例总是显示在枚举中?

from MSDN:

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

SqlDataSourceEnumerator。GetDataSources方法

所以在他们的笔记中说,方法是不可靠的设计;)奇怪!

EDIT:如果我必须解决类似的问题,我会尝试使用windows API NetServerEnum适当的参数设置。