C# 为什么SQL Server实例不总是显示在枚举中?
我正在尝试在我的电脑上运行SQL Server实例C# 为什么SQL Server实例不总是显示在枚举中?,c#,sql-server,C#,Sql Server,我正在尝试在我的电脑上运行SQL Server实例 SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance; DataTable table = instance.GetDataSources(); foreach (DataRow row in table.Rows) { SqlInstanceCollection.Items.Add(row["ServerName"].ToString() + "\\" +
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的实例列表需要多长时间
非常感谢您的帮助。来自MSDN:
由于SqlDataSourceEnumerator用于
如果在网络上定位数据源,则该方法不会始终返回
可用服务器的完整列表,该列表可能不是
每次通话都一样。如果您计划使用此功能让用户
从列表中选择服务器,确保始终提供
选项键入列表中不包含的名称,以防服务器
枚举不会返回所有可用的服务器。此外
此方法可能需要大量的时间来执行,因此
当性能至关重要时,请小心调用它
正如他们在笔记中所说的,这种方法在设计上是不可靠的;奇怪
编辑:如果我必须解决类似的问题,我会尝试使用windows API NetServerEnum,并设置适当的参数。它确实不琐碎,但应该更可靠。来自MSDN:
由于SqlDataSourceEnumerator用于
如果在网络上定位数据源,则该方法不会始终返回
可用服务器的完整列表,该列表可能不是
每次通话都一样。如果您计划使用此功能让用户
从列表中选择服务器,确保始终提供
选项键入列表中不包含的名称,以防服务器
枚举不会返回所有可用的服务器。此外
此方法可能需要大量的时间来执行,因此
当性能至关重要时,请小心调用它
正如他们在笔记中所说的,这种方法在设计上是不可靠的;奇怪
编辑:如果我必须解决类似的问题,我会尝试使用windows API NetServerEnum,并设置适当的参数。它确实不平凡,但应该更可靠。如果正在运行,这会影响代码是否找到正在运行的实例吗?如果正在运行,这会影响代码是否找到正在运行的实例吗?请您建议另一种方法来完成此工作吗?我建议使用NetServerEnum作为更可靠的方法,当然也更复杂:请你建议另一种方法来完成这项工作好吗?我建议使用NetServerEnum作为更可靠的方法,当然也更复杂: