无法使用SMO枚举SQL Server 2008已注册的服务器

时间:2009-09-16 14:42:35

标签: c# sql-server smo

我的工作站上安装了SQL Server 2005 Management Studio。我已经安装了SQL Server 2008工作站工具并删除了SQL Server 2005工具。我现在正在编写一个c#程序,它在管理工作室中迭代我的注册服务器。问题是,它正在迭代2005年工具中的旧列表(现在已经卸载)而不是我的2008年注册服务器列表。

我认为它可能是程序集引用问题,所以我检查我的SMO程序集引用是否指向新工具。我正在使用:

  • Microsoft.SqlServer.ConnectionInfo
  • Microsoft.SqlServer.Management.Sdk.Sfc
  • Microsoft.SqlServer.Smo
  • Microsoft.SqlServer.SqlEnum

我已检查过程序集是10.0版本。

完成这项工作的我的c#代码段是:

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo.RegisteredServers;

    public static void DiscoverServers()
    {
        RegisteredServer[] rsvrs = SqlServerRegistrations.EnumRegisteredServers();
        foreach (RegisteredServer rs in rsvrs)
        {
            Console.WriteLine(rs.Parent.Name + ", " + rs.ServerInstance);

        }
    }

有关如何解决此问题的任何想法?我只是使用错误的SMO代码吗?

干杯, 标记

1 个答案:

答案 0 :(得分:0)

你的代码完全没问题。 我的猜测是,问题在于您的SQL服务器没有公开自己进行浏览。 确保“SQL Server Browser”Windows服务正在运行,并且在SQL Server配置上启用了服务器浏览。