如果sqlexpress位于安装了SQLSERVER2008的同一台机器上,则SmoApplication.EnumAvailableSqlServers()不会列出默认实例

我正在使用SMO来查找网络的可用sqlservers。但是在我运行的一台机器上

应用程序它不提供默认实例名称,但它给出了所有其他机器

命名和默认实例将显示。

观察我的场景。

例如:机器名称:rkwrk3-vm-sr(从我运行app的本地机器,其中

sqlserver2008安装)

在这实际上我有sql2008作为默认实例和sqlexpress(2005)作为命名实例…

但是它只显示了一个实例rkwrk3-vm-sr \ sqlexpress,而且它不会显示rkwrk3-vm-sr。

和其他一些机器Hr-2k3-tm(安装了sqlserver2005)

为此它显示Hr-2k3-tm和Hr-2k3-tm / sqlexpress

我该如何解决这个问题。任何帮助都会得到极大的赞赏。

提前致谢。

实例发现协议(1434上的UDP)由SQL Browser服务提供服务 ,默认情况下禁用该服务 (在名为Slammer的内存中…)。

确保在所有计算机上启用并启动该服务。

使用备用方法获取服务器列表可能会更好。 也许Microsoft推荐使用System.Data.Sql.SqlDataSourceEnumerator.Instance

枚举SQL Server的实例
http://msdn.microsoft.com/en-us/library/a6t1z9x2.aspx

或者这个方法:

使用ODBC在C#中枚举SQL Server实例
http://www.codeproject.com/KB/database/SubmitSQLInfoEnumerator.aspx