C# 枚举Sql服务器的最快方法

C# 枚举Sql服务器的最快方法,c#,sql-server,C#,Sql Server,我知道如何使用SqlDataSourceEnumerator枚举sql服务器,以及如何使用SMO对象进行枚举。这两种方法都很慢。这些几乎是唯一的选择,或者有没有其他更快的方法 谢谢 我从来没有注意到有明显的速度差异,也没有发现使其中任何一个速度更快的方法 但是,如果您将应用程序分发给最终用户或在服务器计算机上运行,那么我建议您使用SqlDataSourceEnumerator,这样您就不必为SMO在计算机上注册或与SMO的版本兼容性而烦恼 此外,如果要向用户显示列表以供选择,则可以通过在可编辑的

我知道如何使用SqlDataSourceEnumerator枚举sql服务器,以及如何使用SMO对象进行枚举。这两种方法都很慢。这些几乎是唯一的选择,或者有没有其他更快的方法


谢谢

我从来没有注意到有明显的速度差异,也没有发现使其中任何一个速度更快的方法

但是,如果您将应用程序分发给最终用户或在服务器计算机上运行,那么我建议您使用SqlDataSourceEnumerator,这样您就不必为SMO在计算机上注册或与SMO的版本兼容性而烦恼

此外,如果要向用户显示列表以供选择,则可以通过在可编辑的组合框中提供值来改善用户体验。如果用户知道服务器名称,可以在组合框中输入服务器名称。收集完可用服务器列表后,可以填充下拉列表


我已经有一段时间没有研究过SMO对象了,但是如果它们支持在发现服务器时报告的事件,这将进一步提高性能,因为您可以在SMO报告项目时向下拉列表中添加项目。然而,目前我只是猜测这种行为会得到支持。

缓存后台进程中运行的某个进程的结果并查询缓存?由于Management Studio和Visual Studio同样慢,我认为这几乎是唯一的方法:\感谢您的回复。我已经在为其他事情使用SMO,所以这不是一个真正的问题,但是SMO对象不支持我所知道的那种事件。然而,我处理它的方式是将您所说的关于拥有可编辑组合框的内容与填充组合框的异步方法结合起来。这样,如果他们知道自己想要什么,就可以输入,或者等待它出现在下拉列表中。我认为它比SSMS对话框b/c稍微好一点,如果你点击下拉菜单,它还没有准备好,它不会强迫你等待服务器加载。