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

时间:2009-07-15 15:01:21

标签: c# sql-server smo

我正在使用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

我该如何解决这个问题。任何帮助都会受到高度赞赏。

先谢谢。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

的方法

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

或者这个方法:

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