无法使用 SMO 枚举 SQL Server 2008 注册服务器
我的工作站上安装了 SQL Server 2005 Management Studio。此后我安装了 SQL Server 2008 工作站工具并删除了 SQL Server 2005 工具。我现在正在编写 ac# 程序,它会迭代我在管理工作室中注册的服务器。问题是,它正在迭代我的 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 代码?
干杯, 标记。
I had SQL Server 2005 Management Studio installed on my workstation. I have since installed SQL Server 2008 workstation tools and removed the SQL Server 2005 tools. I am now writing a c# program which iterates my registered servers in management studio. Problem is, it is iterating through my old list in the 2005 tools (which have now been uninstalled) and not my 2008 registered servers list.
I thought it might be an assembly references issue, so I check that my SMO assembly references are pointing to the new tools. I am using:
- Microsoft.SqlServer.ConnectionInfo
- Microsoft.SqlServer.Management.Sdk.Sfc
- Microsoft.SqlServer.Smo
- Microsoft.SqlServer.SqlEnum
I have checked that the assemblies are the 10.0 versions.
My c# code snippet that does the work is:
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;
and
public static void DiscoverServers()
{
RegisteredServer[] rsvrs = SqlServerRegistrations.EnumRegisteredServers();
foreach (RegisteredServer rs in rsvrs)
{
Console.WriteLine(rs.Parent.Name + ", " + rs.ServerInstance);
}
}
Any ideas on how to fix this? Am I simply using the wrong SMO code?
Cheers,
Mark.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你的代码完全没问题。
我的猜测是,问题出在你的 SQL 服务器上,它没有暴露自己以供浏览。
确保“SQL Server Browser”Windows 服务正在运行,并且在 SQL Server 配置上启用了服务器浏览。
Your code is completely fine.
My guess is, that the problem is with your SQL server that is not exposes itself for browsing.
Make sure that "SQL Server Browser" Windows Service is running and server browsing is enabled on SQL server configuration.