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