Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么SQL Server实例不总是显示在枚举中?_C#_Sql Server - Fatal编程技术网

C# 为什么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() + "\\" +

我正在尝试在我的电脑上运行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的实例列表需要多长时间

非常感谢您的帮助。

来自MSDN:

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

正如他们在笔记中所说的,这种方法在设计上是不可靠的;奇怪

编辑:如果我必须解决类似的问题,我会尝试使用windows API NetServerEnum,并设置适当的参数。它确实不琐碎,但应该更可靠。

来自MSDN:

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

正如他们在笔记中所说的,这种方法在设计上是不可靠的;奇怪


编辑:如果我必须解决类似的问题,我会尝试使用windows API NetServerEnum,并设置适当的参数。它确实不平凡,但应该更可靠。

如果正在运行,这会影响代码是否找到正在运行的实例吗?如果正在运行,这会影响代码是否找到正在运行的实例吗?请您建议另一种方法来完成此工作吗?我建议使用NetServerEnum作为更可靠的方法,当然也更复杂:请你建议另一种方法来完成这项工作好吗?我建议使用NetServerEnum作为更可靠的方法,当然也更复杂: