为什么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的实例列表?
from MSDN:
由于SqlDataSourceEnumerator使用的机制的性质定位网络上的数据源时,该方法并不总是返回可用服务器的完整列表,该列表可能不是每次通话都是一样的。如果您打算使用此功能让用户从列表中选择服务器,确保始终提供一个选项,以键入不在列表中的名称,以防服务器枚举不能返回所有可用的服务器。此外,此方法可能需要花费大量时间来执行,因此当性能至关重要时,请小心调用它。
SqlDataSourceEnumerator。GetDataSources方法
所以在他们的笔记中说,方法是不可靠的设计;)奇怪!
EDIT:如果我必须解决类似的问题,我会尝试使用windows API NetServerEnum适当的参数设置。