如何获取特定计算机的SqlInstances列表

时间:2009-07-08 09:14:12

标签: c# sql-server .net-2.0 wmi smo

有谁能告诉我如何使用c#和SMO或任何api获取远程Sqlserver实例?

我有一个远程服务器名称“RemoteMC”,它有2个sql server实例:“RemoteMc”和“RemoteMC \ sqlexpress”

我尝试在这样的代码中获取实例:

Server srv=new Server("RemoteMC");
DataTable dt=SmoApplication.EnumAvailableSqlServer(true);

但它返回“Host \ sqlexpress”

我不知道出了什么问题。我怎样才能得到结果:

  

RemoteMC
  RemoteMC \ SQLEXPRESS;

3 个答案:

答案 0 :(得分:6)

您正在寻找SmoApplication.EnumAvailableSqlServers方法。有3个重载,其中一个重载了服务器名称的string参数。

返回DataTable,其行包含VersionnameIsLocal等字段。

您需要添加对SMO库的引用,并且您可能希望在C#文件的顶部添加“using Microsoft.SqlServer.Management.Smo;”。

有关SQL SMO的简介,请参阅http://www.sqldbatips.com/showarticle.asp?ID=34

编辑:解决此特定问题的一些代码(我没有编译或运行此代码):

编辑 :.行添加到foreach以便可以编译。

DataTable dataTable = SmoApplication.EnumAvailableSqlServers(false);

foreach (DataRow dataRow in dataTable.Rows)
{
    if ((dataRow["Server"] as string) == "MyServerName")
        Console.WriteLine(dataRow["Instance"] as string);
}

答案 1 :(得分:1)

使用内置方式。

System.Data.Sql.SqlDataSourceEnumerator

答案 2 :(得分:0)

一种方法是在本地计算机下读取注册表项“”Software \ Microsoft \ Microsoft SQL Server \ Instance Names \ SQL \“。您是否可以在解决方案中阅读注册表?