1
我的工作站上安装了SQL Server 2005 Management Studio。此后我安装了SQL Server 2008工作站工具并删除了SQL Server 2005工具。我现在正在编写一个c#程序,它在管理工作室中迭代我注册的服务器。问题是,它正在遍历2005年工具中的旧列表(现在已被卸载),而不是我的2008注册服务器列表。无法枚举带有SMO的SQL Server 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代码?
干杯, 马克。
代码工作正常,但它列出了已注册2005 SSMS的服务器,但未列出2008 SSMS。我所有的SQL Server都具有相同的配置,所以它不能这么做 - 这与我的工作站设置或代码有关,但我不确定具体是什么。我已经检查过隐藏是关闭的,并且SQL浏览器正在我已命名实例的机器上运行。任何其他想法? – 2009-09-17 07:44:47
有两两件事你可以检查/尝试:用EnumRegisteredServers的重载的方法用布尔设置为true 1.尝试:
RegisteredServer[] rsvrs = SqlServerRegistrations.EnumRegisteredServers(true);
2.禁用防火墙,因为它阻止发现,即使SQL服务器在同一台机器上 – 2009-09-17 08:26:57鲍里斯没有防火墙,如果我尝试过载它,我得到一个错误: 无重载方法“EnumRegisteredServers” – 2009-09-17 13:59:42